code: def frameify(self, state, data):
          
  
          # Pull in any partially-processed data
          data = state.recv_buf + data
  
          # Loop over the data
          while data:
              frame, sep, rest = data.partition('\0')
  
              # Did we have a whole frame?
              if sep != '\0':
                  break
  
              # OK, update the data...
              data = rest
  
              # Now, decode the frame and yield it
              try:
                  yield self._decode(frame, self._tables[0])
              except FrameSwitch:
                  break
  
          # Put any remaining data back into the buffer
          state.recv_buf = data
docs: Split data into a sequence of frames.