Class: JIJI::Process
- Inherits:
-
Object
- Object
- JIJI::Process
- Defined in:
- lib/jiji/process.rb
Overview
プロセス
Instance Attribute Summary collapse
-
#agent_manager ⇒ Object
Returns the value of attribute agent_manager.
-
#collector ⇒ Object
Returns the value of attribute collector.
-
#info ⇒ Object
Returns the value of attribute info.
-
#logger ⇒ Object
Returns the value of attribute logger.
-
#observer_manager ⇒ Object
Returns the value of attribute observer_manager.
Instance Method Summary collapse
-
#initialize(info) ⇒ Process
constructor
コンストラクタ.
-
#load_agents(ignore_error) ⇒ Object
エージェントをロードする.
-
#on_finished(state, now) ⇒ Object
コレクターの終了通知を受け取る.
-
#on_progress_changed(progress) ⇒ Object
コレクターからの進捗通知を受け取る.
-
#set_agents(agents) ⇒ Object
- エージェントの設定を更新する 戻り値
-
変更に失敗したエージェントの一覧.
- #start ⇒ Object
- #stop ⇒ Object
-
#trade_enable=(enable) ⇒ Object
自動取引のon/offを設定する.
Constructor Details
#initialize(info) ⇒ Process
コンストラクタ
17 18 19 20 21 22 23 |
# File 'lib/jiji/process.rb', line 17 def initialize( info ) @info = info @started_mutex = Mutex.new @started_mutex.synchronize { @started= false } end |
Instance Attribute Details
#agent_manager ⇒ Object
Returns the value of attribute agent_manager.
112 113 114 |
# File 'lib/jiji/process.rb', line 112 def agent_manager @agent_manager end |
#collector ⇒ Object
Returns the value of attribute collector.
110 111 112 |
# File 'lib/jiji/process.rb', line 110 def collector @collector end |
#info ⇒ Object
Returns the value of attribute info.
109 110 111 |
# File 'lib/jiji/process.rb', line 109 def info @info end |
#logger ⇒ Object
Returns the value of attribute logger.
113 114 115 |
# File 'lib/jiji/process.rb', line 113 def logger @logger end |
#observer_manager ⇒ Object
Returns the value of attribute observer_manager.
111 112 113 |
# File 'lib/jiji/process.rb', line 111 def observer_manager @observer_manager end |
Instance Method Details
#load_agents(ignore_error) ⇒ Object
エージェントをロードする
26 27 28 29 |
# File 'lib/jiji/process.rb', line 26 def load_agents( ignore_error ) info.load_agents( agent_manager, agent_manager.agent_registry, logger, ignore_error ) end |
#on_finished(state, now) ⇒ Object
コレクターの終了通知を受け取る
94 95 96 97 98 99 100 101 102 |
# File 'lib/jiji/process.rb', line 94 def on_finished( state, now ) begin info["state"] = state agent_manager.flush( now ) ensure logger.close if logger @logger = nil end end |
#on_progress_changed(progress) ⇒ Object
コレクターからの進捗通知を受け取る
105 106 107 |
# File 'lib/jiji/process.rb', line 105 def on_progress_changed( progress ) info.progress = progress end |
#set_agents(agents) ⇒ Object
エージェントの設定を更新する
- 戻り値
-
変更に失敗したエージェントの一覧
68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 |
# File 'lib/jiji/process.rb', line 68 def set_agents(agents) failed = {} # エージェントの設定が更新された # 削除対象を特定するため、登録済みエージェントのIDのセットを作成 set = info["agents"] ? info["agents"].inject({}){|s,i| s[i["id"]]=i;s} : {} agents.each {|item| # プロパティの更新 / 対応するエージェントが存在しなければ作成。 set_agent_properties( item, agent_manager, failed ) set.delete item["id"] } # Mapに含まれていないエージェントは削除 set.each { |pair| info = pair[1] begin logger.info "remove agent. name=#{info["name"]} id=#{info["id"]}" agent_manager.remove( info["id"] ) rescue Exception logger.warn "failed to remove agent. name=#{info["name"]} id=#{info["id"]}" logger.warn $! failed[info["id"]] = {:cause=>$!.to_s,:info=>info,:operation=>:remove} end } failed end |
#start ⇒ Object
31 32 33 34 35 36 37 38 39 |
# File 'lib/jiji/process.rb', line 31 def start @started_mutex.synchronize { @started= true collector.listeners << self collector.start } # 状態を覚えておく info["state"] = collector.state end |
#stop ⇒ Object
41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 |
# File 'lib/jiji/process.rb', line 41 def stop @started_mutex.synchronize { if @started # 起動していない場合は何もしない observer_manager.stop collector.stop # 状態を覚えておく info["state"] = collector.state @started = false else # 待機中の場合、キャンセル状態にする。 if info["state"] == :WAITING info["state"] = :CANCELED end logger.close if logger @logger = nil end } end |
#trade_enable=(enable) ⇒ Object
自動取引のon/offを設定する
62 63 64 |
# File 'lib/jiji/process.rb', line 62 def trade_enable=(enable) agent_manager.operator.trade_enable = enable end |