Files
i-mic-rts/lib/networking/packet.rb

42 lines
1.0 KiB
Ruby

class IMICRTS
class Networking
class Packet
# Packet
# [
# header_packet_type,
# header_packet_length,
# header_packet_sequence_id,
# header_packet_client_id,
#
# data
# ]
attr_reader :type, :sequence_id, :client_id, :data
def initialize(type:, sequence_id: nil, client_id:, data:)
@type = type
@sequence_id = sequence_id
@client_id = client_id
@data = data
end
def self.pack(packet)
header = nil
# Packet Type: Char => "C"
# Packet Sequence ID: 32-bit unsigned Integer => "N"
# Packet Client ID: 16-bit unsigned Integer => "n"
if packet.sequence_id
header = [packet.type, packet.sequence_id, packet.client_id].pack("CNn")
else
header = [packet.type, packet.client_id].pack("Cn")
end
header += packet.data
end
def self.unpack(raw_string)
pp raw_string.unpack("Cn")
end
end
end
end