RSI ネットワーク駆動型インターフェース

xmquery プロトコルは、要求パケットによって送信請求されることなく、 xmtopas デーモンのデータ・サプライヤーから送信される 3 つのタイプのデータ・パケットを定義します。

要求パケット・タイプは、 still_alivedata_feed、および except_rec パケットです。 still_alive パケットは、RSI インターフェースで内部的に処理され、データ・コンシューマー・プログラムでプログラミングする必要はありません。

data_feed パケットは、要求/応答タイプ・サブルーチンによって作成されたパケットと非同期に受信されます。 要求/応答関数の処理中に data_feed パケットを受信した場合、制御はコールバック関数に渡されます。コールバック関数は、 RSiOpenx サブルーチンで RSI ハンドルを初期化するときに指定する必要があります。

データ・コンシューマー・プログラムが要求/応答機能を使用していない場合でも、 data_feed パケットを受信して処理できる必要があります。 これは、パケットが受信されるたびにコールバック関数を呼び出す RSiMainLoopx 関数を使用して行われます。

実際には、データ・フィード・コールバック関数は、送信された最新の要求に対する応答として識別できない、受信されたすべてのパケットに対して呼び出されます。ただし、そのようなパケットのタイプが i_am_backstill_alive、または except_recの場合を除きます。 これは、タイムアウト後に到着した「要求/応答」パケットへの応答がコールバック関数に送信されることを意味します。 受信したパケット・タイプをテストするのは、コールバック関数の責任です。

except_rec パケットは、要求/応答タイプ・サブルーチンによって作成されたパケットと非同期に受信されます。 要求/応答関数の処理中に except_rec パケットを受信した場合、制御はコールバック関数に渡されます。コールバック関数は、 RSiOpenx サブルーチンで RSI ハンドルを初期化するときに指定する必要があります。

データ・コンシューマー・プログラムが要求/応答機能を使用していない場合でも、 except_rec パケットを受信して処理できる必要があります。 これは、パケットが受信されるたびにコールバック関数を呼び出す RSiMainLoopx 関数を使用して行われます。

注: API は、メッセージ・タイプを処理するコールバック関数がそのホストの RSiOpenx サブルーチン呼び出しで指定されていない限り、リモート・ホストからの except_rec メッセージを破棄します。