Source code for remcall.util
from queue import Queue
from binascii import hexlify
[docs]def view_hex(b: bytes):
return '0x{}'.format(hexlify(b).decode('ascii'))
[docs]class QueueStream:
stream_counter = 0
def __init__(self, name=None):
self.name = name or str(self.stream_counter)
QueueStream.stream_counter += 1
self.queue = Queue()
def __repr__(self):
return 'QueueStream("{}")'.format(self.name)
[docs] def write(self, data: bytes):
# lock!
for byt in data:
self.queue.put(byt)
return len(data)
[docs] def read(self, size: int):
return b''.join(self.queue.get().to_bytes(1, 'little') for i in range(size))
[docs]class TypeWrapper:
'''Wraps a core.Type and provides a nice annotation for Signature instances'''
def __init__(self, typ, name_converter):
self.typ = typ
self.name_converter = name_converter
def __repr__(self):
return self.name_converter.type_name(self.typ)