Beispiel #1
0
    def encode_sandesh(sandesh):
        transport = TTransport.TMemoryBuffer()
        protocol_factory = TXMLProtocol.TXMLProtocolFactory()
        protocol = protocol_factory.getProtocol(transport)

        from gen_py.sandesh.ttypes import SandeshHeader

        sandesh_hdr = SandeshHeader(sandesh.scope(), sandesh.timestamp(),
                                    sandesh.module(), sandesh.source_id(),
                                    sandesh.context(), sandesh.seqnum(),
                                    sandesh.versionsig(), sandesh.type(),
                                    sandesh.hints(), sandesh.level(),
                                    sandesh.category(), sandesh.node_type(),
                                    sandesh.instance_id())
        # write the sandesh header
        if sandesh_hdr.write(protocol) < 0:
            print 'Error in encoding sandesh header'
            return None
        # write the sandesh
        if sandesh.write(protocol) < 0:
            print 'Error in encoding sandesh'
            return None
        # get the message
        msg = transport.getvalue()
        # calculate the message length
        msg_len = len(_XML_SANDESH_OPEN) + len(msg) + len(_XML_SANDESH_CLOSE)
        len_width = len(_XML_SANDESH_OPEN) - \
            (len(_XML_SANDESH_OPEN_ATTR_LEN) + len(_XML_SANDESH_OPEN_END))
        # pad the length with leading 0s
        len_str = (str(msg_len)).zfill(len_width)
        encoded_buf = _XML_SANDESH_OPEN_ATTR_LEN + len_str + \
            _XML_SANDESH_OPEN_END + msg + _XML_SANDESH_CLOSE
        return encoded_buf
Beispiel #2
0
    def extract_sandesh_header(sandesh_xml):
        transport = TTransport.TMemoryBuffer(sandesh_xml)
        protocol_factory = TXMLProtocol.TXMLProtocolFactory()
        protocol = protocol_factory.getProtocol(transport)

        from gen_py.sandesh.ttypes import SandeshHeader
        hdr = SandeshHeader()
        hdr_len = hdr.read(protocol)
        if hdr_len == -1:
            return (None, 0, None)
        # Extract the sandesh name
        (length, sandesh_name) = protocol.readSandeshBegin()
        if length == -1:
            return (hdr, hdr_len, None)
        return (hdr, hdr_len, sandesh_name)