WSWaitForLinkActivityWithCallback (C 関数)

int WSWaitForLinkActivityWithCallback(WSLINK l, WSLinkWaitCallBackObject callback)

l で指定されたWSTP接続で読み込むデータがあるまで返さないが,callback として渡される関数を周期的に呼び返す.

詳細

  • ユーザインターフェースやアプリケーションのメインスレッドを妨げないように,データを待たなければならないバックグラウンドスレッドでWSWaitForLinkActivityWithCallback()を使う.
  • ロギングのために有効にされたリンク上でのリンクアクティビティを待つ必要がある場合に,WSWaitForLinkActivityWithCallback()(あるいは関連する関数であるWSWaitForLinkActivity() )を使う.
  • WSWaitForLinkActivityWithCallback()は,エラーが起った場合にはWSWAITERRORを,そして関数が成功した場合にはWSWAITSUCCESSを返す.
  • WSLinkWaitCallBackObjectは,形式int function(WSLINK, void *)の関数に対するポインタである.第2引数は,将来の使用のために用意されている.関数が1を返す場合には,WSWaitForLinkActivityWithCallback()WSWAITCALLBACKABORTEDを返す.
  • WSWaitForLinkActivityWithCallback()は,WSTPヘッダファイルwstp.hの中で宣言される.

例題

  (1)

#include "wstp.h"

/* A function for WSTP to call back to while waiting */
int WaitFunction(WSLINK l, void *future)
{
    /* By default do not back out of
        WSWaitForLinkActivityWithCallback(). */
    return 0;
}


/* A function for waiting for link activity */

void f(WSLINK l)
{
    switch(WSWaitForLinkActivityWithCallBack(l, WaitFunction))
    {
        case WSWAITERROR:
            /* Handle the error */
            break;
        case WSWAITSUCCESS:
            /* Now read incoming data */
            break;
        case WSWAITCALLBACKABORTED:
        default:
            /* WaitFunction decided to abort the wait. */
    }
}