mirror of
https://github.com/cyberarm/i-mic-rts.git
synced 2025-12-16 08:02:36 +00:00
Basic networking implemented, currently non functional
This commit is contained in:
42
lib/networking/packet.rb
Normal file
42
lib/networking/packet.rb
Normal file
@@ -0,0 +1,42 @@
|
||||
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
|
||||
Reference in New Issue
Block a user