1# -*- coding: utf-8 -*-
2
3from __future__ import absolute_import
4
5import binascii
6
7from .transport import TMemoryBuffer
8from .protocol.binary import TBinaryProtocolFactory
9
10
11def serialize(thrift_object, proto_factory=TBinaryProtocolFactory()):
12    transport = TMemoryBuffer()
13    protocol = proto_factory.get_protocol(transport)
14    thrift_object.write(protocol)
15    protocol.write_message_end()
16    return transport.getvalue()
17
18
19def deserialize(thrift_object, buf, proto_factory=TBinaryProtocolFactory()):
20    transport = TMemoryBuffer(buf)
21    protocol = proto_factory.get_protocol(transport)
22    thrift_object.read(protocol)
23    return thrift_object
24
25
26def hexlify(byte_array, delimeter=' '):
27    s = binascii.hexlify(byte_array).decode('utf-8')
28    return delimeter.join(a+b for a, b in zip(s[::2], s[1::2]))
29
30
31def hexprint(byte_array, delimeter=' ', count=10):
32    print("Bytes:")
33    print(byte_array)
34
35    print("\nHex:")
36    g = hexlify(byte_array, delimeter).split(delimeter)
37    print('\n'.join(' '.join(g[i:i+10]) for i in range(0, len(g), 10)))
38