Class: JIJI::WorkerThreadObserverManager

Inherits:
Object
  • Object
show all
Defined in:
lib/jiji/observer.rb

Overview

コレクターからのレートの通知を受け取り、別スレッドで処理するクラス。

  • 登録されたオブザーバーごとに専用のスレッドを起こして情報を通知する。

  • スレッドを破棄する必要があるため、必ずstopで停止すること。

Instance Attribute Summary collapse

Instance Method Summary collapse

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

#loggerObject

ロガー



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

#stopObject

通知を停止する



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