def to_internal_binary(self) -> bytes: buffer = b"" buffer += chr(self.reliability) buffer += Binary.write_int(len(self.buffer)) buffer += Binary.write_int(self.identifier_ack or -1) buffer += (PacketReliability.is_sequenced_or_ordered( self.reliability if chr(self.order_channel) else b"")) buffer += self.buffer return buffer
def block_address(self, address: str, timeout: int): buffer = b"" buffer += chr(PyRakLib.PACKET_BLOCK_ADDRESS) buffer += chr(len(address)) buffer += address buffer += Binary.write_int(timeout) self.server.push_main_to_thread_packet(buffer)
def stream_ack(self, identifier, identifier_ack): buffer = b"" buffer += chr(PyRakLib.PACKET_ACK_NOTIFICATION) buffer += chr(len(identifier)) buffer += identifier buffer += Binary.write_int(identifier_ack) self.server.push_thread_to_main_packet(buffer)
def stream_ping_measure(self, session: Session, ping_ms: int): identifier = session.get_address().to_string() buffer = b"" buffer += chr(PyRakLib.PACKET_REPORT_PING) buffer += chr(len(identifier)) buffer += identifier buffer += Binary.write_int(ping_ms) self.server.push_thread_to_main_packet(buffer)
def to_binary(self): buffer = b"" buffer += chr((self.reliability << self.RELIABILITY_SHIFT) | ( self.SPLIT_FLAG if self.has_split else 0)).encode("UTF-8") buffer += Binary.write_short(len(self.buffer) << 3) buffer += Binary.write_l_triad( self.message_index) if PacketReliability.is_reliable( self.reliability) else b"" buffer += Binary.write_l_triad( self.sequence_index) if PacketReliability.is_sequenced( self.reliability) else b"" buffer += Binary.write_l_triad(self.order_index + chr( self.order_channel)) if PacketReliability.is_sequenced_or_ordered( self.reliability) else b"" buffer += Binary.write_int(self.split_count) + Binary.write_short( self.split_id) + Binary.write_int( self.split_index) if self.has_split else b"" return buffer + self.buffer
def to_binary(self): return Binary.write_int(self.parts[0]) + Binary.write_int( self.parts[1]) + Binary.write_int( self.parts[2]) + Binary.write_int(self.parts[3])
def from_random(self): return self.from_data( Binary.write_int(int(time.time())), Binary.write_short(os.getpid()), Binary.write_short(os.geteuid()), Binary.write_int(random.randint(-0x7fffffff, 0x7fffffff)), Binary.write_int(random.randint(-0x7fffffff, 0x7fffffff)))
def put_int(self, v: int): self.buffer += Binary.write_int(v)