def parseContent()

in qpid/management.py [0:0]


  def parseContent (self, ch, cls, codec, seq=0):
    """ Parse a received content message. """
    if (cls == 'C' or (cls == 'B' and seq == 0)) and self.configCb == None:
      return
    if cls == 'I' and self.instCb == None:
      return

    packageName = codec.read_str8 ()
    className   = codec.read_str8 ()
    hash        = codec.read_bin128 ()
    classKey    = (packageName, className, hash)

    if classKey not in self.schema:
      return

    row        = []
    timestamps = []

    timestamps.append (codec.read_uint64 ())  # Current Time
    timestamps.append (codec.read_uint64 ())  # Create Time
    timestamps.append (codec.read_uint64 ())  # Delete Time
    objId = objectId(codec)
    schemaClass = self.schema[classKey]
    if cls == 'C' or cls == 'B':
      notPresent = self.parsePresenceMasks(codec, schemaClass)

    if cls == 'C' or cls == 'B':
      row.append(("id", objId))
      for element in schemaClass['C'][1:]:
        tc   = element[1]
        name = element[0]
        if name in notPresent:
          row.append((name, None))
        else:
          data = self.decodeValue(codec, tc)
          row.append((name, data))

    if cls == 'I' or cls == 'B':
      if cls == 'I':
        row.append(("id", objId))
      for element in schemaClass['I'][1:]:
        tc   = element[1]
        name = element[0]
        data = self.decodeValue (codec, tc)
        row.append ((name, data))

    if   cls == 'C' or (cls == 'B' and seq != self.syncSequence):
      self.configCb (ch.context, classKey, row, timestamps)
    elif cls == 'B' and seq == self.syncSequence:
      if timestamps[2] == 0:
        obj = mgmtObject (classKey, timestamps, row)
        self.syncResult.append (obj)
    elif cls == 'I':
      self.instCb   (ch.context, classKey, row, timestamps)