Sha256: b021164b7ee4748d47759bea9b695efd6a0d4a9a24f608d4af0a893d60848611
Contents?: true
Size: 1.21 KB
Versions: 2
Compression:
Stored size: 1.21 KB
Contents
require 'hashmake' module SPNet class ControlMessage < Message include Hashmake::HashMakeable GET = :controlMessageSubtypeGet SET = :controlMessageSubtypeSet SUBTYPES = [ GET, SET ] HASHED_ARGS_SPECS = [ Hashmake::ArgSpec.new(:reqd => true, :key => :subtype, :type => Symbol, :validator => ->(a){ SUBTYPES.include?(a) } ) ] attr_reader :subtype def initialize hashed_args hash_make ControlMessage::HASHED_ARGS_SPECS, hashed_args super_hashed_args = hashed_args.merge! :type => Message::CONTROL super(super_hashed_args) end def self.make_handler get_handler, set_handler handler = lambda do |message| raise ArgumentError, "message is not a ControlMessage" unless message.is_a?(ControlMessage) if message.subtype == GET return get_handler.call message elsif message.subtype == SET return set_handler.call message else raise ArgumentError, "message subtype #{message.subtype} is not valid" end end return handler end def self.make_set_message data ControlMessage.new :subtype => SET, :data => data end def self.make_get_message ControlMessage.new :subtype => GET end end end
Version data entries
2 entries across 2 versions & 1 rubygems
Version | Path |
---|---|
spnet-0.1.2 | lib/spnet/control_message.rb |
spnet-0.1.1 | lib/spnet/control_message.rb |