Module: LogjamAgent::Util
- Included in:
- ZMQForwarder
- Defined in:
- lib/logjam_agent/util.rb
Constant Summary collapse
- BIG_ENDIAN =
          copied from amqp protocol gem (slightly modified) 
- ([1].pack("s") == "\x00\x01") 
- UINT64 =
- "Q"
- META_INFO_VERSION =
- 1
- META_INFO_TAG =
- 0xcabd
- META_INFO_DEVICE_NUMBER =
- 0
- FIXNUM_MAX =
          we assume we’re running on MRI ruby 
- 2 ** (1.size * 8 - 2) - 1 
Instance Method Summary collapse
- #augment_connection_spec(spec, default_port) ⇒ Object
- #next_fixnum(i) ⇒ Object
- #pack_info(n, compression_method = LogjamAgent.compression_method) ⇒ Object
- #pack_uint64_big_endian(uint64) ⇒ Object
- #unpack_info(info) ⇒ Object
- #unpack_uint64_big_endian(string) ⇒ Object
- #zclock_time(t = Time.now) ⇒ Object
Instance Method Details
#augment_connection_spec(spec, default_port) ⇒ Object
| 61 62 63 64 65 66 67 68 69 70 71 | # File 'lib/logjam_agent/util.rb', line 61 def augment_connection_spec(spec, default_port) protocol, host, port = %r{\A(?:([^:]+)://)?([^:]+)(?::(\d+))?\z}.match(spec).captures protocol ||= "tcp" port ||= default_port if protocol == "inproc" # should only be used for integration tests "#{protocol}://#{host}" else "#{protocol}://#{host}:#{port}" end end | 
#next_fixnum(i) ⇒ Object
| 41 42 43 | # File 'lib/logjam_agent/util.rb', line 41 def next_fixnum(i) (i+=1) > FIXNUM_MAX ? 1 : i end | 
#pack_info(n, compression_method = LogjamAgent.compression_method) ⇒ Object
| 45 46 47 48 49 | # File 'lib/logjam_agent/util.rb', line 45 def pack_info(n, compression_method = LogjamAgent.compression_method) info = [META_INFO_TAG, compression_method, META_INFO_VERSION, META_INFO_DEVICE_NUMBER].pack("nCCN") info << pack_uint64_big_endian(zclock_time) info << pack_uint64_big_endian(n) end | 
#pack_uint64_big_endian(uint64) ⇒ Object
| 17 18 19 | # File 'lib/logjam_agent/util.rb', line 17 def pack_uint64_big_endian(uint64) [uint64].pack(UINT64) end | 
#unpack_info(info) ⇒ Object
| 51 52 53 54 55 56 57 58 59 | # File 'lib/logjam_agent/util.rb', line 51 def unpack_info(info) tag, compression_method, version, device = info[0..7].unpack("nCCN") zclock = unpack_uint64_big_endian(info[8..15]) secs = zclock / 1000 msecs = zclock % 1000 sent = Time.at(secs) + 1000.0/msecs sequence = unpack_uint64_big_endian(info[16..23]) [tag, compression_method, version, device, sent, sequence] end | 
#unpack_uint64_big_endian(string) ⇒ Object
| 21 22 23 | # File 'lib/logjam_agent/util.rb', line 21 def unpack_uint64_big_endian(string) string.unpack(UINT64) end | 
#zclock_time(t = Time.now) ⇒ Object
| 37 38 39 | # File 'lib/logjam_agent/util.rb', line 37 def zclock_time(t = Time.now) t.tv_sec*1000 + t.tv_usec/1000 end |