Class: JIJI::Collector

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

Overview

レート一覧を取得しオブザーバーに通知するクラス

  • 設定値で指定された間隔でレート一覧を取得し、JIJI::ObserverManagerに通知する。

Direct Known Subclasses

BackTestCollector

Instance Attribute Summary collapse

Instance Method Summary collapse

Constructor Details

#initializeCollector

コンストラクタ



17
18
19
20
21
22
23
24
25
26
# File 'lib/jiji/collector.rb', line 17

def initialize
  @alive = false
  @state_mutex = Mutex.new
  @end_mutex = Mutex.new
  @future = nil
  @state_mutex.synchronize {
    @state = :WAITING
    @listeners = []
  }
end

Instance Attribute Details

#clientObject

証券会社アクセスクライアント



80
81
82
# File 'lib/jiji/collector.rb', line 80

def client
  @client
end

#confObject

コンフィグレーション



74
75
76
# File 'lib/jiji/collector.rb', line 74

def conf
  @conf
end

#errorObject (readonly)

情報取得中に発生したエラー



82
83
84
# File 'lib/jiji/collector.rb', line 82

def error
  @error
end

#listenersObject

収集終了の通知を受けるリスナ。



85
86
87
# File 'lib/jiji/collector.rb', line 85

def listeners
  @listeners
end

#loggerObject

ロガー



78
79
80
# File 'lib/jiji/collector.rb', line 78

def logger
  @logger
end

#observer_managerObject

JIJI::ObserverManager



76
77
78
# File 'lib/jiji/collector.rb', line 76

def observer_manager
  @observer_manager
end

#wait_timeObject

待ち時間



72
73
74
# File 'lib/jiji/collector.rb', line 72

def wait_time
  @wait_time
end

Instance Method Details

#progressObject

進捗(%を示す整数)を取得する



55
56
57
# File 'lib/jiji/collector.rb', line 55

def progress
  0 # リアルトレードでは常に0
end

#startObject

収集を開始する。



29
30
31
32
33
34
35
36
37
38
39
40
# File 'lib/jiji/collector.rb', line 29

def start
  @state_mutex.synchronize {
    @state = :RUNNING
  }
  @end_mutex.synchronize {
    @alive = true
    @future = Thread.fork {
      start_collect
      :finished
    }
  }
end

#stateObject

状態を取得する。

戻り値

状態を示すシンボル。

:WAITING ..  実行待ち状態
:RUNNING ..  実行中
:CANCELED ..  実行がキャンセルされた(JIJI::BackTestCollectorのみ)
:FINISHED ..  実行完了(JIJI::BackTestCollectorのみ)
:ERROR_END ..  エラー終了(JIJI::BackTestCollectorのみ)


65
66
67
68
69
# File 'lib/jiji/collector.rb', line 65

def state
  @state_mutex.synchronize {
    @state
  }
end

#stopObject

収集を停止する。

  • サーバーが終了した際に呼び出される。

  • JIJI::ObserverManagerの破棄も内部で行う。



45
46
47
48
49
50
51
52
# File 'lib/jiji/collector.rb', line 45

def stop
  @end_mutex.synchronize {
    return unless @alive # 実行していない場合何もしない。
    @alive = false
  }
  # スレッドの完了を待つ
  @future.value
end