Class: Agora::AgoraDynamicKey2::Util

Inherits:
Object
  • Object
show all
Defined in:
lib/agora/dynamic_key2/util.rb

Class Method Summary collapse

Class Method Details

.pack_int16(int) ⇒ Object



5
6
7
# File 'lib/agora/dynamic_key2/util.rb', line 5

def self.pack_int16(int)
  [int].pack('s')
end

.pack_map_uint32(map) ⇒ Object



41
42
43
44
45
46
47
# File 'lib/agora/dynamic_key2/util.rb', line 41

def self.pack_map_uint32(map)
  kv = ''
  Hash[map.sort].each do |k, v|
    kv += pack_uint16(k) + pack_uint32(v)
  end
  (pack_uint16(map.size) + kv).force_encoding('utf-8')
end

.pack_string(str) ⇒ Object



29
30
31
# File 'lib/agora/dynamic_key2/util.rb', line 29

def self.pack_string(str)
  pack_uint16(str.bytesize) + str
end

.pack_uint16(int) ⇒ Object



13
14
15
# File 'lib/agora/dynamic_key2/util.rb', line 13

def self.pack_uint16(int)
  [int].pack('v')
end

.pack_uint32(int) ⇒ Object



21
22
23
# File 'lib/agora/dynamic_key2/util.rb', line 21

def self.pack_uint32(int)
  [int].pack('V')
end

.unpack_int16(data) ⇒ Object



9
10
11
# File 'lib/agora/dynamic_key2/util.rb', line 9

def self.unpack_int16(data)
  [data[0..2].unpack1('s'), data[2..-1]]
end

.unpack_map_uint32(data) ⇒ Object



49
50
51
52
53
54
55
56
57
58
# File 'lib/agora/dynamic_key2/util.rb', line 49

def self.unpack_map_uint32(data)
  len, data = unpack_uint16(data)
  map = {}
  (1..len).each do
    k, data = unpack_uint16(data)
    v, data = unpack_uint32(data)
    map[k] = v
  end
  [map, data]
end

.unpack_string(data) ⇒ Object



33
34
35
36
37
38
39
# File 'lib/agora/dynamic_key2/util.rb', line 33

def self.unpack_string(data)
  len, data = unpack_uint16(data)
  if len.zero?
    return ['', data[len..-1]]
  end
  [data[0..len - 1], data[len..-1]]
end

.unpack_uint16(data) ⇒ Object



17
18
19
# File 'lib/agora/dynamic_key2/util.rb', line 17

def self.unpack_uint16(data)
  [data[0..2].unpack1('v'), data[2..-1]]
end

.unpack_uint32(data) ⇒ Object



25
26
27
# File 'lib/agora/dynamic_key2/util.rb', line 25

def self.unpack_uint32(data)
  [data[0..4].unpack1('V'), data[4..-1]]
end