Sha256: 73420911abd316850924255134ebf45311051b3a37eb134aba9b22bc61f128aa
Contents?: true
Size: 1.07 KB
Versions: 1
Compression:
Stored size: 1.07 KB
Contents
require 'hashmake' module SPNet class MessageInPort include Hashmake::HashMakeable DEFAULT_VALIDATOR = ->(a){ true } ARG_SPECS = [ Hashmake::HashedArg.new(:reqd => false, :key => :name, :type => String, :default => "UNNAMED"), Hashmake::HashedArg.new(:reqd => true, :key => :processor, :type => Proc), Hashmake::HashedArg.new(:reqd => true, :key => :message_type, :type => Symbol, :validator => ->(a){ Message::TYPES.include?(a) }) ] attr_reader :name, :link def initialize args hash_make MessageInPort::ARG_SPECS, args @queue = [] @link = nil end def recv_message message raise ArgumentError, "message is not a Message" unless message.is_a?(Message) if message.type == @message_type return @processor.call(message) else raise ArgumentError, "message.type #{message.type} is not supported on this port" end end def clear_link @link = nil end def set_link link raise ArgumentError, "link #{link} is not a MessageOutPort" unless link.is_a?(MessageOutPort) @link = link end end end
Version data entries
1 entries across 1 versions & 1 rubygems
Version | Path |
---|---|
spnet-0.1.0 | lib/spnet/message_in_port.rb |