Module: MaxCube::Messages::Handler

Includes:
MaxCube::Messages
Included in:
Parser, Serializer, TCP::Handler, TCP::Parser, UDP::Handler, UDP::Parser
Defined in:
lib/maxcube/messages/handler.rb

Constant Summary

Constants included from MaxCube::Messages

DAYS_OF_WEEK, DEVICE_MODE, DEVICE_TYPE, PACK_FORMAT

Instance Method Summary collapse

Instance Method Details

#check_data_type(raw_data) ⇒ Object

Raises:

  • (TypeError)


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

def check_data_type(raw_data)
  raise TypeError unless valid_data_type(raw_data)
  raw_data
end

#check_hash(hash) ⇒ Object



90
91
92
93
94
95
# File 'lib/maxcube/messages/handler.rb', line 90

def check_hash(hash)
  check_hash_msg_type(hash)
  check_hash_keys(hash)
  check_hash_values(hash)
  hash
end

#check_hash_keys(hash) ⇒ Object



67
68
69
70
# File 'lib/maxcube/messages/handler.rb', line 67

def check_hash_keys(hash)
  maybe_check_valid_hash_keys(hash, true)
  hash
end

#check_hash_msg_type(hash) ⇒ Object



49
50
51
52
53
# File 'lib/maxcube/messages/handler.rb', line 49

def check_hash_msg_type(hash)
  msg_type = hash[:type]
  check_msg_type(msg_type)
  msg_type
end

#check_hash_values(hash) ⇒ Object

Raises:



76
77
78
79
80
81
82
# File 'lib/maxcube/messages/handler.rb', line 76

def check_hash_values(hash)
  return hash if valid_hash_values(hash)
  hash = hash.dup
  hash.delete(:type)
  raise InvalidMessageBody
    .new(@msg_type, "invalid hash values: #{hash}")
end

#check_msg(msg) ⇒ Object



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

def check_msg(msg)
  check_msg_msg_type(msg)
end

#check_msg_msg_type(msg) ⇒ Object



33
34
35
# File 'lib/maxcube/messages/handler.rb', line 33

def check_msg_msg_type(msg)
  check_msg_type(msg_msg_type(msg))
end

#check_msg_type(msg_type) ⇒ Object



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

def check_msg_type(msg_type)
  maybe_check_valid_msg_type(msg_type, true)
  @msg_type
end

#msg_type_hash_keys(msg_type) ⇒ Object



55
56
57
# File 'lib/maxcube/messages/handler.rb', line 55

def msg_type_hash_keys(msg_type)
  msg_type_which_hash_keys(msg_type, false)
end

#msg_type_hash_opt_keys(msg_type) ⇒ Object



59
60
61
# File 'lib/maxcube/messages/handler.rb', line 59

def msg_type_hash_opt_keys(msg_type)
  msg_type_which_hash_keys(msg_type, true)
end

#valid_data_type(raw_data) ⇒ Object



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

def valid_data_type(raw_data)
  raw_data.is_a?(String)
end

#valid_hash(hash) ⇒ Object



84
85
86
87
88
# File 'lib/maxcube/messages/handler.rb', line 84

def valid_hash(hash)
  valid_hash_msg_type(hash) &&
    valid_hash_keys(hash) &&
    valid_hash_values(hash)
end

#valid_hash_keys(hash) ⇒ Object



63
64
65
# File 'lib/maxcube/messages/handler.rb', line 63

def valid_hash_keys(hash)
  maybe_check_valid_hash_keys(hash, false)
end

#valid_hash_msg_type(hash) ⇒ Object



45
46
47
# File 'lib/maxcube/messages/handler.rb', line 45

def valid_hash_msg_type(hash)
  valid_msg_type(hash[:type])
end

#valid_hash_values(hash) ⇒ Object



72
73
74
# File 'lib/maxcube/messages/handler.rb', line 72

def valid_hash_values(hash)
  hash.none? { |_, v| v.nil? }
end

#valid_msg(msg) ⇒ Object



37
38
39
# File 'lib/maxcube/messages/handler.rb', line 37

def valid_msg(msg)
  valid_msg_msg_type(msg)
end

#valid_msg_msg_type(msg) ⇒ Object



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

def valid_msg_msg_type(msg)
  valid_msg_type(msg_msg_type(msg))
end

#valid_msg_type(msg_type) ⇒ Object



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

def valid_msg_type(msg_type)
  maybe_check_valid_msg_type(msg_type, false)
end