WSLinkServer (C 関数)

WSLinkServer

WSTPのリンクサーバを表すWSTPのタイプである.

詳細

  • WSTPのリンクサーバオブジェクトは,TCPIPのリンクサーバのネットワークインターフェースを管理するオブジェクトへのハンドルである.
  • Wolfram Symbolic Transfer Protocolを通常の状態で使用する場合には,プロセス間で行われた接続は,1対1で働く.つまり,プログラムAがプログラムBに接続された場合,AとBのみがAとBの間に設定された交信の端点を使うことができるということである.この1対1のモデルは,従来のクライアントとサーバの交信モデル(サーバが1対多数のモードでの接続を宣伝し,サーバが1つの接続を持ち,多くのクライアントがその1つの接続に繋ぐ)とは異なる. The WSTPのリンクサーバ機能は,ユーザがWolfram Symbolic Transfer Protocolを使って1対多数の接続を提供するプログラムを作成することを可能にする.
  • プログラムは,リンクサーバオブジェクトとインタラクトし,リンクサーバの端点に入ってくるWSTP接続から作成される新しいWSLINKオブジェクトを取り出すことができる.
  • リンクサーバオブジェクトは,プログラムがWSWaitForNewLinkFromLinkServer()を呼び出す,あるいはプログラムがWSRegisterCallbackFunctionWithLinkServer()を通して非同期のコールバック関数を登録するかするまで,入ってくる接続の待ち行列を作成する.前者の場合には,リンクサーバは新しいWSLINKオブジェクトを1つWSWaitForNewLinkFromLinkServer()への呼出しごと,接続の待ち行列からプログラムに返す.後者の場合には,リンクサーバオブジェクトは,接続の待ち行列が空になるまで,1つの呼出しごとに,コールバック関数への引数としてWSLINKオブジェクトを1つと一緒にコールバック関数を非同期的に呼び出す.
  • WSLinkServerは,WSTPヘッダファイルwstp.hの中で宣言される.

例題

  (1)

#include "wstp.h"

void operateLinkServer(WSENV env)
{
    int error;
    WSLinkServer linkServer;
    WSLINK theLink;


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

    theLink = WSWaitForNewLinkFromLinkserver(linkServer, &error);
    if(theLink == (WSLINK)0 || error != WSEOK)
    { /* Handle error */ }

    ...

    WSCLose(theLink);

    WSShutdownLinkServer(linkServer);
}