code: def unpack_struct(self, struct):
          
  
          size = struct.size
  
          offset = self.offset
          if self.data:
              avail = len(self.data) - offset
          else:
              avail = 0
  
          if avail < size:
              raise UnpackException(struct.format, size, avail)
  
          self.offset = offset + size
          return struct.unpack_from(self.data, offset)
docs: unpacks the given struct from the underlying buffer and returns
          the results. Will raise an UnpackException if there is not
          enough data to satisfy the format of the structure