Pull

LS/RS からコンフィグを取得する処理は、 arms_pull() 関数1 つに集約されている。

API 名 解説
arms_pull() 初期化された情報を用いてPull を行う

arms_pull() は、LS およびRS への接続処理を適切に行い、Service-Config の取得/反映までを実行する関数である。 回線やサーバの通信タイムアウトなどが発生した場合は、この関数内で予め指定された回数のリトライを行う。

LS-Skip について

arms_pull() は、特に指定しない限り通常はLS に対する接続から開始するが、 LS から取得したLocation-Config をメモリ上にダンプするAPI が提供されている。 これを arms_pull() 実行前に libarms に読み込ませることで、LS への接続をskip し、 RS への接続から開始するようにできる。これらを実行するためのAPI は以下の通りである。

API 名 解説
arms_dump_state() 取得したLocation-Config をメモリ上にダンプする
arms_restore_state() 事前にダンプされたLocation-Config を読み込む

RS-Skip について

arms_pull() は、通常 RS へ接続して Service-Config を取得するが、 RS から取得した Service-Config や Push を受け付けるために必要な情報をメモリ上にダンプする Callback API が提供されている。 Callback API でメモリ上にダンプされる情報は Module Cache と呼ぶ。 この Module Cache を arms_pull() 実行前に libarms に読み込ませることで、RS への接続を skip し、 SA に Service-Config を反映させることができる。 これらを実行するための API は以下の通りである。

API 名 解説
arms_set_md_config_size_limit() Service-Config のサイズの上限を設定する
arms_restore_module() 事前にダンプされた Module Cache を設定する
arms_dump_module_cb_t() Module Cache をメモリ上にダンプする

ノート

RS-Skip は、RS からの指示に基づいて行う。 そのため、RS が RS-Skip を指示しない事が保証されている場合、 RS-Skip の実装は不要である。

目次

前のトピックへ

初期化処理

次のトピックへ

Push

リンク