def write_entity(e, output_stream): tmp_output_stream = OutputStream() e.write(tmp_output_stream) write_str(e.get_urn(), output_stream) write_int32(e.get_id().get_value(), output_stream) write_int32(len(tmp_output_stream.getvalue()), output_stream) output_stream.write(tmp_output_stream.getvalue())
def write_msg(msg, output_stream): tmp_output_stream = OutputStream() msg.write(tmp_output_stream) msg_data = tmp_output_stream.getvalue() write_str(msg.urn, output_stream) write_int32(len(msg_data), output_stream) output_stream.write(msg_data)
def write_property(p, output_stream): write_str(p.get_urn(), output_stream) write_boolean(p.is_defined(), output_stream) if p.is_defined(): tmp_output = OutputStream() p.write(tmp_output) write_int32(len(tmp_output.getvalue()), output_stream) output_stream.write(tmp_output.getvalue())
def send_msg(self, msg): tmp_output_stream = OutputStream() write_msg(msg, tmp_output_stream) write_int32(0, tmp_output_stream) msg_data = tmp_output_stream.getvalue() output_stream = OutputStream() # first write the size of the message write_int32(len(msg_data), output_stream) output_stream.write(msg_data) self.send_bytes(output_stream.getvalue())
def read_float32_from_byte_arr(byte_array): value = float((ord(byte_array[0]) << 24) + (ord(byte_array[1]) << 18) + (ord(byte_array[2]) << 8) + ord(byte_array[3])) return value def write_float32(value, output_stream): output_stream.write(chr((value >> 24) & 0xFF)) output_stream.write(chr((value >> 16) & 0xFF)) output_stream.write(chr((value >> 8) & 0xFF)) output_stream.write(chr(value & 0xFF)) return if __name__ == '__main__': print("writing the value:549139337") output_stream = OutputStream() write_int32(549139337, output_stream) four_bytes = output_stream.getvalue() for my_ch in four_bytes: print(ord(my_ch)) print("reading back") input_stream = InputStream(four_bytes) read_four_bytes = input_stream.read(4) for read_ch in read_four_bytes: print(ord(read_ch)) print("read value:" + str(read_int32_from_byte_arr(read_four_bytes)))