mi-task/task_3/file_send_lcmt.py

67 lines
2.1 KiB
Python
Executable File

"""LCM type definitions This file automatically generated by lcm.
struct file_send_lcmt {
string data;
}
"""
try:
import cStringIO.StringIO as BytesIO
except ImportError:
from io import BytesIO
import struct
class file_send_lcmt(object):
__slots__ = ["data"]
__typenames__ = ["string"]
__dimensions__ = [None]
def __init__(self):
self.data = ""
def encode(self):
buf = BytesIO()
buf.write(file_send_lcmt._get_packed_fingerprint())
self._encode_one(buf)
return buf.getvalue()
def _encode_one(self, buf):
__data_encoded = self.data.encode('utf-8')
buf.write(struct.pack('>I', len(__data_encoded)+1))
buf.write(__data_encoded)
buf.write(b"\0")
def decode(data):
if hasattr(data, 'read'):
buf = data
else:
buf = BytesIO(data)
if buf.read(8) != file_send_lcmt._get_packed_fingerprint():
raise ValueError("Decode error")
return file_send_lcmt._decode_one(buf)
decode = staticmethod(decode)
def _decode_one(buf):
self = file_send_lcmt()
__data_len = struct.unpack('>I', buf.read(4))[0]
self.data = buf.read(__data_len)[:-1].decode('utf-8', 'replace')
return self
_decode_one = staticmethod(_decode_one)
def _get_hash_recursive(parents):
if file_send_lcmt in parents: return 0
tmphash = (0x90df9b84cdceaf0a) & 0xffffffffffffffff
tmphash = (((tmphash<<1)&0xffffffffffffffff) + (tmphash>>63)) & 0xffffffffffffffff
return tmphash
_get_hash_recursive = staticmethod(_get_hash_recursive)
_packed_fingerprint = None
def _get_packed_fingerprint():
if file_send_lcmt._packed_fingerprint is None:
file_send_lcmt._packed_fingerprint = struct.pack(">Q", file_send_lcmt._get_hash_recursive([]))
return file_send_lcmt._packed_fingerprint
_get_packed_fingerprint = staticmethod(_get_packed_fingerprint)
def get_hash(self):
"""Get the LCM hash of the struct"""
return struct.unpack(">Q", file_send_lcmt._get_packed_fingerprint())[0]