Class: MaxCube::Messages::TCP::Parser

Inherits:
Object
  • Object
show all
Includes:
Handler, Parser, MessageA, MessageC, MessageF, MessageH, MessageL, MessageM, MessageN, MessageS
Defined in:
lib/maxcube/messages/tcp/parser.rb,
lib/maxcube/messages/tcp/type/a.rb,
lib/maxcube/messages/tcp/type/c.rb,
lib/maxcube/messages/tcp/type/f.rb,
lib/maxcube/messages/tcp/type/h.rb,
lib/maxcube/messages/tcp/type/l.rb,
lib/maxcube/messages/tcp/type/m.rb,
lib/maxcube/messages/tcp/type/n.rb,
lib/maxcube/messages/tcp/type/s.rb

Defined Under Namespace

Modules: MessageA, MessageC, MessageF, MessageH, MessageL, MessageM, MessageN, MessageS

Constant Summary collapse

MSG_TYPES =
%w[H F L C M N A E D b g j p o v w S].freeze

Constants included from MaxCube::Messages

DAYS_OF_WEEK, DEVICE_MODE, DEVICE_TYPE, PACK_FORMAT

Instance Method Summary collapse

Methods included from Parser

#parse_msg_body, #read

Methods included from Handler

#check_data_type, #check_hash, #check_hash_keys, #check_hash_msg_type, #check_hash_values, #check_msg, #check_msg_msg_type, #check_msg_type, #msg_type_hash_keys, #msg_type_hash_opt_keys, #valid_data_type, #valid_hash, #valid_hash_keys, #valid_hash_msg_type, #valid_hash_values, #valid_msg, #valid_msg_msg_type, #valid_msg_type

Instance Method Details

#parse_tcp_data(raw_data) ⇒ Array<Hash>

Process set of messages - raw data separated by “rn”

Parameters:

  • raw (String, #read)

    data from a Cube

Returns:

  • (Array<Hash>)

    particular message contents


27
28
29
30
# File 'lib/maxcube/messages/tcp/parser.rb', line 27

def parse_tcp_data(raw_data)
  check_tcp_data(raw_data)
  raw_data.split("\r\n").map(&method(:parse_tcp_msg))
end

#parse_tcp_msg(msg) ⇒ Hash

Parse single message already without “rn”

Parameters:

  • single (String, #read)

    message data without “rn”

Returns:

  • (Hash)

    particular message parts separated into hash, which should be human readable


36
37
38
39
40
41
42
# File 'lib/maxcube/messages/tcp/parser.rb', line 36

def parse_tcp_msg(msg)
  check_tcp_msg(msg)
  body = msg.split(':')[1] || ''
  hash = { type: @msg_type }
  return hash unless parse_msg_body(body, hash, 'tcp')
  check_tcp_hash(hash)
end