Class: CarbonMU::IPCMessage
- Inherits:
-
Object
- Object
- CarbonMU::IPCMessage
show all
- Defined in:
- lib/carbonmu/ipc/ipc_message.rb
Instance Attribute Summary collapse
Class Method Summary
collapse
Instance Method Summary
collapse
Constructor Details
#initialize(op, options = {}) ⇒ IPCMessage
Returns a new instance of IPCMessage.
25
26
27
28
29
30
31
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 25
def initialize(op, options={})
raise ArgumentError, "invalid op specified: #{op}" unless IPCMessage.valid_ops.include?(op)
required_parameters = IPCMessage.required_parameters(op) || []
provided_parameters = options.keys
raise ArgumentError, "missing parameters for #{op} op: #{required_parameters - provided_parameters}" unless (required_parameters & provided_parameters).size == required_parameters.size
@params = options.merge(op: op)
end
|
Dynamic Method Handling
This class handles dynamic methods through the method_missing method
#method_missing(method_sym, *args, &block) ⇒ Object
33
34
35
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 33
def method_missing(method_sym, *args, &block)
@params.has_key?(method_sym) ? @params[method_sym] : super
end
|
Instance Attribute Details
#params ⇒ Object
Returns the value of attribute params.
23
24
25
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 23
def params
@params
end
|
Class Method Details
.required_parameters(op) ⇒ Object
9
10
11
12
13
14
15
16
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 9
def self.required_parameters(op)
{
write: [:connection_id, :output],
connect: [:connection_id],
disconnect: [:connection_id],
command: [:command, :connection_id],
}[op]
end
|
.unserialize(text) ⇒ Object
18
19
20
21
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 18
def self.unserialize(text)
hash_with_symbol_keys = Hash[MultiJson.load(text).map{|(k,v)| [k.to_sym,v]}]
self.new(hash_with_symbol_keys[:op].to_sym, hash_with_symbol_keys)
end
|
.valid_ops ⇒ Object
5
6
7
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 5
def self.valid_ops
[:started, :command, :connect, :disconnect, :write, :reboot, :retrieve_existing_connections]
end
|
Instance Method Details
#==(o) ⇒ Object
Also known as:
eql?
49
50
51
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 49
def ==(o)
o.class == self.class && o.params == self.params
end
|
#respond_to?(method_sym, include_private = false) ⇒ Boolean
37
38
39
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 37
def respond_to?(method_sym, include_private = false)
@params.has_key?(method_sym) ? true : super
end
|
#serialize ⇒ Object
41
42
43
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 41
def serialize
MultiJson.dump(params)
end
|
#to_s ⇒ Object
45
46
47
|
# File 'lib/carbonmu/ipc/ipc_message.rb', line 45
def to_s
"<IPCMessage: #{params}>"
end
|