Module: MaxCube::Messages::TCP::Handler

Includes:
Handler
Included in:
Serializer
Defined in:
lib/maxcube/messages/tcp/handler.rb

Constant Summary

Constants included from MaxCube::Messages

DAYS_OF_WEEK, DEVICE_MODE, DEVICE_TYPE, PACK_FORMAT

Instance Method Summary collapse

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

#check_tcp_data(raw_data) ⇒ Object


56
57
58
59
60
# File 'lib/maxcube/messages/tcp/handler.rb', line 56

def check_tcp_data(raw_data)
  # check_data_type(raw_data)
  raise InvalidMessageFormat unless valid_tcp_data(raw_data)
  raw_data
end

#check_tcp_hash(hash) ⇒ Object


46
47
48
49
# File 'lib/maxcube/messages/tcp/handler.rb', line 46

def check_tcp_hash(hash)
  check_hash(hash)
  hash
end

#check_tcp_msg(msg) ⇒ Object


35
36
37
38
39
40
# File 'lib/maxcube/messages/tcp/handler.rb', line 35

def check_tcp_msg(msg)
  check_tcp_msg_length(msg)
  check_tcp_msg_format(msg)
  check_msg(msg)
  msg
end

#check_tcp_msg_format(msg) ⇒ Object


23
24
25
26
# File 'lib/maxcube/messages/tcp/handler.rb', line 23

def check_tcp_msg_format(msg)
  raise InvalidMessageFormat unless valid_tcp_msg_format(msg)
  msg
end

#check_tcp_msg_length(msg) ⇒ Object


14
15
16
17
# File 'lib/maxcube/messages/tcp/handler.rb', line 14

def check_tcp_msg_length(msg)
  raise InvalidMessageLength unless valid_tcp_msg_length(msg)
  msg.length
end

#valid_tcp_data(raw_data) ⇒ Object


51
52
53
54
# File 'lib/maxcube/messages/tcp/handler.rb', line 51

def valid_tcp_data(raw_data)
  return true if raw_data.empty?
  raw_data[0..1] != "\r\n" && raw_data.chars.last(2).join == "\r\n"
end

#valid_tcp_hash(hash) ⇒ Object


42
43
44
# File 'lib/maxcube/messages/tcp/handler.rb', line 42

def valid_tcp_hash(hash)
  valid_hash(hash)
end

#valid_tcp_msg(msg) ⇒ Object

Check single message validity, already without “rn” at the end


29
30
31
32
33
# File 'lib/maxcube/messages/tcp/handler.rb', line 29

def valid_tcp_msg(msg)
  valid_tcp_msg_length(msg) &&
    valid_tcp_msg_format(msg) &&
    valid_msg(msg)
end

#valid_tcp_msg_format(msg) ⇒ Object


19
20
21
# File 'lib/maxcube/messages/tcp/handler.rb', line 19

def valid_tcp_msg_format(msg)
  msg =~ /\A[[:alpha:]]:[[:print:]]*\z/
end

#valid_tcp_msg_length(msg) ⇒ Object


10
11
12
# File 'lib/maxcube/messages/tcp/handler.rb', line 10

def valid_tcp_msg_length(msg)
  msg.length.between?(2, MSG_MAX_LEN)
end