Push

RS からのPush を実行するためには、SA にて各Push オペレーションに対する処理をコールバック関数の形で実装しておく必要がある。 また、SA は arms_pull() によってPull が正常に完了した後、 Push の待ち受け処理を開始する必要がある。

Push 待ち受け開始

API 名 解説
arms_push_method_query() Push 方式の折衝を行う
arms_event_loop() Push の待ちうけ処理を開始する

arms_push_method_query() を実行すると、RS との間でPush 方式(https-simple/https-tunnel) の折衝を行う。 arms_pull() 実行前に Module Cache を設定していた場合は、RS との折衝を skip できる。 この後、 arms_event_loop() を実行すると、折衝した方法でPush 待ちうけ処理が開始される。 この関数を実行すると、RS からのPush を受け付けるためのループ処理に入る。

Pushメッセージ処理

API 名 解説
arms_config_cb_t() コンフィグ設定コールバック関数
arms_read_config_cb_t() コンフィグ読み出しコールバック関数
arms_get_status_cb_t() ステータス取得コールバック関数
arms_command_cb_t() コマンド実行コールバック関数

Push メッセージがRS から渡されると、事前に登録しておいたコールバック関数が呼ばれることになる。 SA は、指示されたメッセージに従い、コールバック関数の中で各種処理を実行する。

コンフィグ設定

RS よりコンフィグ設定メッセージがPush されると、下記の順で処理が進行する。

  • libarms 内で設定メッセージ処理後に想定されるモジュール一覧を作成
  • 現在動作中のモジュール一覧と比較
  • 設定後に消去すべきモジュールID を用いて arms_config_cb_t() 呼び出し。アクションは ARMS_REMOVE_MODULE。
  • RS から渡されたコンフィグをそれぞれのID 向けに arms_config_cb_t() 呼び出し。アクションはARMS_PUSH_STORE_CONFIG。
  • すべてコンフィグを渡し終わると、一度だけ arms_config_cb_t() 呼び出し。アクションは ARMS_PUSH_EXEC_STORED_CONFIG。このときid=0 となる。
  • 上記すべてが成功すると、RS に対して処理完了通知
  • Push できることを確認して処理完了

ARMS_PUSH_EXEC_STORED_CONFIG での呼び出しでがエラーを返した場合、あるいは処理完了通知が通信障害などで実行できなかった場合は、ロールバック処理を行う。

目次

前のトピックへ

Pull

次のトピックへ

イベントコールバック

リンク