Class: Baykit::BayServer::Protocol::Packet

Inherits:
Object
  • Object
show all
Includes:
Util, Util::Reusable
Defined in:
lib/baykit/bayserver/protocol/packet.rb

Constant Summary collapse

INITIAL_BUF_SIZE =
8192 * 4

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initialize(type, header_len, max_data_len) ⇒ Packet

Returns a new instance of Packet.



27
28
29
30
31
32
33
# File 'lib/baykit/bayserver/protocol/packet.rb', line 27

def initialize(type, header_len, max_data_len)
  @type = type
  @header_len = header_len
  @max_data_len = max_data_len
  @buf = StringUtil.alloc(INITIAL_BUF_SIZE)
  reset
end

Instance Attribute Details

#bufObject (readonly)

Returns the value of attribute buf.



22
23
24
# File 'lib/baykit/bayserver/protocol/packet.rb', line 22

def buf
  @buf
end

#buf_lenObject

Returns the value of attribute buf_len.



23
24
25
# File 'lib/baykit/bayserver/protocol/packet.rb', line 23

def buf_len
  @buf_len
end

#header_lenObject (readonly)

Returns the value of attribute header_len.



24
25
26
# File 'lib/baykit/bayserver/protocol/packet.rb', line 24

def header_len
  @header_len
end

#max_data_lenObject (readonly)

Returns the value of attribute max_data_len.



25
26
27
# File 'lib/baykit/bayserver/protocol/packet.rb', line 25

def max_data_len
  @max_data_len
end

#typeObject (readonly)

Returns the value of attribute type.



21
22
23
# File 'lib/baykit/bayserver/protocol/packet.rb', line 21

def type
  @type
end

Instance Method Details

#data_lenObject



41
42
43
# File 'lib/baykit/bayserver/protocol/packet.rb', line 41

def data_len()
  return @buf_len - @header_len
end

#expandObject



45
46
47
# File 'lib/baykit/bayserver/protocol/packet.rb', line 45

def expand
  @buf = StringUtil.realloc(@buf, @buf.length * 2)
end

#new_data_accessorObject



53
54
55
# File 'lib/baykit/bayserver/protocol/packet.rb', line 53

def new_data_accessor()
  return PacketPartAccessor.new(self, @header_len, -1)
end

#new_header_accessorObject



49
50
51
# File 'lib/baykit/bayserver/protocol/packet.rb', line 49

def new_header_accessor()
  return PacketPartAccessor.new(self, 0, @header_len)
end

#resetObject



35
36
37
38
39
# File 'lib/baykit/bayserver/protocol/packet.rb', line 35

def reset
  @buf.clear()
  header_len.times do |i| @buf << 0 end
  @buf_len = header_len
end

#to_sObject



57
58
59
# File 'lib/baykit/bayserver/protocol/packet.rb', line 57

def to_s
  return "pkt[#{ClassUtil.get_local_name(self.class)}(#{@type})]"
end