WSGetMessage (C 関数)

int WSGetMessage(WSLINK link,int* code,int*param)

link と連合した緊急メッセージチャネルから帯域外のメッセージコードを読み取り,コードをcode に,そして任意の変数をparam に保持する.

詳細

  • WSGetMessage()は帯域外のメッセージを読み取ると0以外の値を返し,それ以外の場合には0を返す.
  • WSGetMessage()はノンブロッキングの関数である.
  • WSGetMessage()は下のようなメッセージを返すことができる:
  • WSTerminateMessage現行のプログラムの停止
    WSInterruptMessage現作業への割込み
    WSAbortMessage現作業の放棄
    WSEndPacketMessageもうサポートされていないメッセージ
    WSSynchronizeMessageリンクの両端で内部式の流れを同期化
    WSImDyingMessageリンクの向こう側を停止中です
    WSWaitingAcknowledgementリンクの向こう側が返答を待っています
    WSMarkTopLevelMessageWSTPライブラリ内部のメッセージ
    WSLinkClosingMessageWSTPライブラリ内部のメッセージ
    WSAuthenticationFailureメッセージの認証不可
    WSFirstUserMessageユーザ定義メッセージ空間の始まり
    WSLastUserMessageユーザ定義メッセージ空間の終り
  • WSFirstUserMessageは,任意のユーザ定義メッセージの初期値として使用されるべきである.ユーザは新しいメッセージを#define MyAppMessage WSFirstUserMessage + 1と定義することができる.
  • ユーザ定義メッセージはWSLastUserMessageより大きい値を取ってはいけない.
  • 標準WSTPメッセージは任意の変数を持たない.
  • WSGetMessage()は,WSTPヘッダファイルwstp.hの中で宣言される.

例題

  (1)

#include "wstp.h"

/* read an out-of-band message code from a link */

void f(WSLINK lp)
{
    int code, param;

    if(WSMessageReady(lp))
    {
        if(! WSGetMessage(lp, &code, &param))
            { /* unable to read the message code from lp */ }
    }
}