mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-15 15:52:34 +00:00
42 lines
1.0 KiB
Ruby
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 |