ServiceStatus::Repository
Inherits Notify::SourceRepository < Reference < Object
外部サービスの障害検知の SourceRepository 実装。 前回のレベルとの比較という、このソースに固有の差分検出をここに閉じる(仕様書 4.2 節)。
Constants
Log = ::Log.for("service_status")
POLL_TICK = 1.second
poll_new を呼ばれる間隔。
設定の polling_interval_s より短いのは、取得がブロックしないためである。 取りに行ってから取れるまでを別のファイバで待つ以上、取れたことを知るには 聞き直しに来る必要がある。設定の間隔で聞き直すと、取れてから知らせるまでに 最大でその間隔ぶんの遅れが乗る。
Constructors
new(client : FeedClient, settings : Settings, texts : Texts)
SourceInstance methods
配信の本文を読み、前回のレベルと比べて変わったサービスだけを Incoming にする。
通信から切り離してあり、spec からはこれを直に呼んで差分検出だけを確かめられる。
settings
Sourcesettings=(settings : Settings) : Nil
設定の差し替え。
無効にしたサービスの記録は捨てる。残しておくと、有効に戻したときに 無効にしていた間の変化を知らせることになる。 取得先が変わったときは全部を捨てる。別の配信の前回値と比べる意味が無い。
間隔が変わったときは、直近に取りに行った時刻から新しい間隔で次の時刻を引き直す。 引き直さないと、1 時間から 30 秒へ縮めても、前の間隔で決めた次の時刻まで取りに行かない。