Sha256: f4a3dfb10b5e2a331ff795797d23cff14f51d4da5c5f688fa17f175805ce0c3b
Contents?: true
Size: 1.48 KB
Versions: 3
Compression:
Stored size: 1.48 KB
Contents
module Pione module Agent class RuleProvider < TupleSpaceClient set_agent_type :rule_provider def initialize(ts_server) super(ts_server) @table = {} # import system rules Model::SYSTEM_RULES.each do |command_rule| @table[command_rule.rule_path] = command_rule end end def read_document(doc) doc.rules.each do |rule_path, rule| add_rule(rule_path, rule) end end def add_rule(rule_path, content) raise ArgumentError unless content.kind_of?(Rule) @table[rule_path] = content end # Return known rule pathes. def known_rules @table.keys end define_state :request_waiting define_state :rule_loading define_state_transition :initialized => :request_waiting define_state_transition :request_waiting => :rule_loading define_state_transition :rule_loading => :request_waiting private def transit_to_request_waiting return take(Tuple[:request_rule].any) end def transit_to_rule_loading(request) out = Tuple[:rule].new(rule_path: request.rule_path) if known_rule?(request.rule_path) out.status = :known out.content = @table[request.rule_path] else out.status = :unknown end write(out) end def known_rule?(rule_path) @table.has_key?(rule_path) end end set_agent RuleProvider end end
Version data entries
3 entries across 3 versions & 1 rubygems
Version | Path |
---|---|
pione-0.1.2 | lib/pione/agent/rule-provider.rb |
pione-0.1.1 | lib/pione/agent/rule-provider.rb |
pione-0.1.0 | lib/pione/agent/rule-provider.rb |