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

Class Method Details

.pack_int16_big_endian(short) ⇒ String

Packs a 16-bit signed integer to big-endian binary string.

Parameters:

  • short (Integer)

    The value to pack

Returns:

  • (String)

    2-byte binary string in big-endian order



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.

Parameters:

  • long_long (Integer)

    The value to pack

Returns:

  • (String)

    8-byte binary string in big-endian order



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.

Parameters:

  • data (String)

    2-byte binary string in big-endian order

Returns:

  • (Array<Integer>)

    Single-element array containing the unpacked value



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.

Parameters:

  • data (String)

    8-byte binary string in big-endian order

Returns:

  • (Array<Integer>)

    Single-element array containing the unpacked value



24
25
26
# File 'lib/amq/pack.rb', line 24

def self.unpack_uint64_big_endian(data)
  data.unpack(UINT64_BE)
end