Module: AMQ::Pack
- Defined in:
- lib/amq/pack.rb
Overview
Implements pack to/unpack from 64bit string in network byte order. Uses native Ruby pack directives with explicit endianness (Ruby 1.9.3+).
Constant Summary collapse
- UINT64_BE =
Pack format strings - frozen for performance
'Q>'.freeze
- INT64_BE =
64-bit unsigned, big-endian
'q>'.freeze
- INT16_BE =
64-bit signed, big-endian
's>'.freeze
- UINT16_BE =
16-bit signed, big-endian
'n'.freeze
Class Method Summary collapse
-
.pack_int16_big_endian(short) ⇒ String
Packs a 16-bit signed integer to big-endian binary string.
-
.pack_uint64_big_endian(long_long) ⇒ String
Packs a 64-bit unsigned integer to big-endian binary string.
-
.unpack_int16_big_endian(data) ⇒ Array<Integer>
Unpacks a big-endian binary string to a 16-bit signed integer.
-
.unpack_uint64_big_endian(data) ⇒ Array<Integer>
Unpacks a big-endian binary string to a 64-bit unsigned integer.
Class Method Details
.pack_int16_big_endian(short) ⇒ String
Packs a 16-bit signed integer to big-endian binary string.
31 32 33 |
# File 'lib/amq/pack.rb', line 31 def self.pack_int16_big_endian(short) [short].pack(INT16_BE) end |
.pack_uint64_big_endian(long_long) ⇒ String
Packs a 64-bit unsigned integer to big-endian binary string.
17 18 19 |
# File 'lib/amq/pack.rb', line 17 def self.pack_uint64_big_endian(long_long) [long_long].pack(UINT64_BE) end |
.unpack_int16_big_endian(data) ⇒ Array<Integer>
Unpacks a big-endian binary string to a 16-bit signed integer.
38 39 40 |
# File 'lib/amq/pack.rb', line 38 def self.unpack_int16_big_endian(data) data.unpack(INT16_BE) end |
.unpack_uint64_big_endian(data) ⇒ Array<Integer>
Unpacks a big-endian binary string to a 64-bit unsigned integer.
24 25 26 |
# File 'lib/amq/pack.rb', line 24 def self.unpack_uint64_big_endian(data) data.unpack(UINT64_BE) end |