class

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)
Source

Instance methods

ingest(body : String) : Array(Notify::Incoming)

配信の本文を読み、前回のレベルと比べて変わったサービスだけを Incoming にする。

通信から切り離してあり、spec からはこれを直に呼んで差分検出だけを確かめられる。

Source
poll_interval

このソースを呼び出す間隔。

Source
poll_new(now : Time::Span) : Array(Notify::Incoming)

時刻を受け取るのは、間隔の扱いを spec から確かめるためである。

Source
poll_new

取りに行く時刻が来ていれば取りに行き、結末が来ていれば前回と比べる。

Source
settings
Source
settings=(settings : Settings) : Nil

設定の差し替え。

無効にしたサービスの記録は捨てる。残しておくと、有効に戻したときに 無効にしていた間の変化を知らせることになる。 取得先が変わったときは全部を捨てる。別の配信の前回値と比べる意味が無い。

間隔が変わったときは、直近に取りに行った時刻から新しい間隔で次の時刻を引き直す。 引き直さないと、1 時間から 30 秒へ縮めても、前の間隔で決めた次の時刻まで取りに行かない。

Source
source_id

このソースの識別子。Incoming#source とルールのマッチングに使う。

Source
start

開始のたびに差分検出の状態を戻す。 無効にしている間の変化を、再開直後に一斉に知らせないためである。

Source
stop

ソースの後始末。

Source
texts

通知に載せる文言。言語が決まるのは起動の途中なので、後から差し替えられる。

Source
texts=(texts : Texts)

通知に載せる文言。言語が決まるのは起動の途中なので、後から差し替えられる。

Source