code: def process_rawq(self):
          
          buf = [b'', b'']
          try:
              while self.rawq:
                  c = yield from self.rawq_getchar()
                  if not self.iacseq:
                      if self.sb == 0 and c == theNULL:
                          continue
                      if self.sb == 0 and c == b"\021":
                          continue
                      if c != IAC:
                          buf[self.sb] = buf[self.sb] + c
                          continue
                      else:
                          self.iacseq += c
                  elif len(self.iacseq) == 1:
                      # 'IAC: IAC CMD [OPTION only for WILL/WONT/DO/DONT]'
                      if c in (DO, DONT, WILL, WONT):
                          self.iacseq += c
                          continue
  
                      self.iacseq = b''
                      if c == IAC:
                          buf[self.sb] = buf[self.sb] + c
                      else:
                          if c == SB:  # SB ... SE start.
                              self.sb = 1
                              self.sbdataq = b''
                          elif c == SE:
                              self.sb = 0
                              self.sbdataq = self.sbdataq + buf[1]
                              buf[1] = b''
                          yield from self._opt_handler(c, NOOPT,
                                                       data=self.sbdataq)
                  elif len(self.iacseq) == 2:
                      cmd = self.iacseq[1:2]
                      self.iacseq = b''
                      opt = c
                      if cmd in (DO, DONT):
                          yield from self._opt_handler(cmd, opt)
                      elif cmd in (WILL, WONT):
                          yield from self._opt_handler(cmd, opt)
          except EOFError:  # raised by self.rawq_getchar()
              self.iacseq = b''  # Reset on EOF
              self.sb = 0
              pass
          self.cookedq = self.cookedq + buf[0]
          self.sbdataq = self.sbdataq + buf[1]
docs: Transfer from raw queue to cooked queue.
  
          Set self.eof when connection is closed.