def write_object(self, dg, opcode, obj=None, written_handles=None): obj_dg = Datagram() if self.version >= (6, 21): obj_dg.add_uint8(opcode) if obj is not None: self.write_handle(obj_dg, obj['handle_id'], written_handles) write_pointer(obj_dg, obj['obj_id']) obj_dg.appendData(obj['data']) self.write_datagram(obj_dg, dg)
def write_object(self, dg, opcode, obj=None, written_handles=None): obj_dg = Datagram() if self.version >= (6, 21): obj_dg.add_uint8(opcode) if obj is not None: obj_id = obj['obj_id'] instance = self.object_map.get(obj_id) self.write_handle(obj_dg, obj['handle_id'], written_handles) self.write_pointer(obj_dg, obj_id) if instance: instance.write_object(self.version, obj) obj_dg.appendData(obj['data']) self.write_datagram(obj_dg, dg)
def writerCallback(self): # if there are no events queued, return None if not self.eventQueue: return None # collect data data = [] for event in self.eventQueue: data.append(event.toMessage()) self.eventQueue = [] # make a message for the events myPyDatagram = Datagram() myPyDatagram.add_uint8(NetworkManager.MessageEnum.EVENT) datastring = json.dumps(data) print(datastring) myPyDatagram.add_string(datastring) print("server: writer callback") return myPyDatagram
def write(self, f): dg = Datagram() dg.appendData(self.HEADER) if self.version >= (6, 27): header_size = 6 elif self.version >= (5, 0): header_size = 5 else: header_size = 4 bam_major_ver, bam_minor_ver = self.version dg.add_uint32(header_size) dg.add_uint16(bam_major_ver) dg.add_uint16(bam_minor_ver) if header_size >= 5: dg.add_uint8(self.file_endian) if header_size >= 6: dg.add_bool(self.stdfloat_double) self.written_handles = [] self.write_long_pointers = False if self.objects: objects = list(self.objects.values()) self.write_object(dg, BamGlobals.BOC_push, objects[0], self.written_handles) for obj in objects[1:]: self.write_object(dg, BamGlobals.BOC_adjunct, obj, self.written_handles) for data in self.file_datas: self.write_file_data(dg, data) if self.version >= (6, 21): self.write_object(dg, BamGlobals.BOC_pop) f.write(dg.getMessage())
def write(self, f, target_version): dg = Datagram() dg.appendData(self.HEADER) if target_version >= (6, 27): header_size = 6 elif target_version >= (5, 0): header_size = 5 else: header_size = 4 bam_major_ver, bam_minor_ver = target_version dg.add_uint32(header_size) dg.add_uint16(bam_major_ver) dg.add_uint16(bam_minor_ver) if header_size >= 5: dg.add_uint8(self.file_endian) if header_size >= 6: dg.add_bool(self.stdfloat_double) written_handles = [] if self.objects: self.write_object(dg, BOC_push, self.objects[0], written_handles) for obj in self.objects[1:]: self.write_object(dg, BOC_adjunct, obj, written_handles) for data in self.file_datas: self.write_file_data(dg, data) if self.version >= (6, 21): self.write_object(dg, BOC_pop) f.write(dg.getMessage())