Class: JIJI::WorkerThreadObserverManager
- Inherits:
-
Object
- Object
- JIJI::WorkerThreadObserverManager
- Defined in:
- lib/jiji/observer.rb
Overview
コレクターからのレートの通知を受け取り、別スレッドで処理するクラス。
-
登録されたオブザーバーごとに専用のスレッドを起こして情報を通知する。
-
スレッドを破棄する必要があるため、必ずstopで停止すること。
Instance Attribute Summary collapse
-
#logger ⇒ Object
ロガー.
Instance Method Summary collapse
-
#<<(observer) ⇒ Object
- オブザーバーを追加する observer
-
オブザーバー.
-
#initialize(observers, logger) ⇒ WorkerThreadObserverManager
constructor
- コンストラクタ observers
- オブサーバー logger
-
ロガー.
-
#next_rates(rates) ⇒ Object
- レートの通知を受ける rates
-
レート.
-
#stop ⇒ Object
通知を停止する.
Constructor Details
#initialize(observers, logger) ⇒ WorkerThreadObserverManager
コンストラクタ
- observers
-
オブサーバー
- logger
-
ロガー
42 43 44 45 46 47 |
# File 'lib/jiji/observer.rb', line 42 def initialize( observers, logger ) @logger = logger @workers = observers.map {|o| Worker.new( o, @logger ) } end |
Instance Attribute Details
#logger ⇒ Object
ロガー
68 69 70 |
# File 'lib/jiji/observer.rb', line 68 def logger @logger end |
Instance Method Details
#<<(observer) ⇒ Object
オブザーバーを追加する
- observer
-
オブザーバー
57 58 59 |
# File 'lib/jiji/observer.rb', line 57 def <<(observer) @workers << Worker.new( observer, @logger ) end |
#next_rates(rates) ⇒ Object
レートの通知を受ける
- rates
-
レート
50 51 52 53 54 |
# File 'lib/jiji/observer.rb', line 50 def next_rates( rates ) @workers.each {|w| w.next_rates( rates ) } end |
#stop ⇒ Object
通知を停止する
61 62 63 64 65 66 |
# File 'lib/jiji/observer.rb', line 61 def stop @logger.info( "observer manager stop" ) @workers.each {|w| w.alive = false } @workers.each {|w| w.thread.join } @workers.clear end |