module LogCourier::Protocol

Protocol

Public Class Methods

parse_helo_vers(data) click to toggle source
# File lib/log-courier/protocol.rb, line 24
def self.parse_helo_vers(data)
  data = "\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00\x00" if data.length < 8

  flags, major_version, minor_version, patch_version, client = data.unpack('NNNNA4')
  client = case client
           when 'LCOR'
             'Log Courier'
           when 'LCVR'
             'Log Carver'
           when 'RYLC'
             'Ruby Log Courier'
           else
             'Unknown'
           end

  if major_version != 0 || minor_version != 0 || patch_version != 0
    version = "#{major_version}.#{minor_version}.#{patch_version}"
    client_version = "#{client} v#{version}"
  else
    version = ''
    client_version = client
  end

  {
    flags: flags,
    major_version: major_version,
    minor_version: minor_version,
    patch_version: patch_version,
    client: client,
    version: version,
    client_version: client_version,
  }
end