LS/RS からコンフィグを取得する処理は、 arms_pull() 関数1 つに集約されている。
API 名 | 解説 |
---|---|
arms_pull() | 初期化された情報を用いてPull を行う |
arms_pull() は、LS およびRS への接続処理を適切に行い、Service-Config の取得/反映までを実行する関数である。 回線やサーバの通信タイムアウトなどが発生した場合は、この関数内で予め指定された回数のリトライを行う。
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 を読み込む |
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 の実装は不要である。