WSRegisterCallbackFunctionWithLinkServer (C 関数)

void WSRegisterCallbackFunctionWithLinkServer(WSLinkServer s, WSNewLinkCallbackFunction f)

リンクサーバ s でコールバック関数 f を登録する.

詳細

  • WSRegisterCallbackFunctionWithLinkServer()は,プログラムがリンクサーバ s でコールバック関数 f を「インストール」することを可能にして,リンクサーバが入ってくる接続を受け取る際に,リンクサーバが非同期的にコールバーク関数を通して,新しい接続のプログラムに通知するようにする.
  • リンクサーバオブジェクトは,コールバック関数 f に非同期的にコールバックを行う.このため,プログラムは,f を通してアクセス可能な共有のデータ構造へのアクセスを非同期的なアクセスの問題から護らなければならない.
  • リンクサーバの接続の待ち行列に,複数の接続が待っている場合には,リンクサーバは,その待ち行列のそれぞれの接続につき一度ずつコールバック関数 f を呼び出す.

例題

  (1)

#include "wstp.h"

void NewLinkCallbackFunction(WSLinkServer server, WSLINK link);

WSLinkServer startLinkServer(WSENV env)
{
    WSLinkServer theServer;
    int error;

    theServer = WSNewLinkServer(env, NULL /* No context object
        for this example */, &error);
    if(error != WSEOK)
    { /* Handle error */ }

    WSRegisterCallbackFunctionWithLinkServer(theServer,
        NewLinkCallbackFunction);

    return theServer;
}


void NewLinkCallbackFunction(WSLinkServer server, WSLINK link)
{
    WSActivate(link);
    WSPutFunction(link,"Print",1);
        WSPutString(link, "Hello Client Program");
    WSEndPacket(link);
    WSFlush(link);

    ...

    WSClose(link);
}