MLGetMessage (C 関数)

MLGetMessageWSGetMessageに置き換えられた.

int MLGetMessage(MLINK link,int* code,int*param)

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

詳細

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

例題

  (1)

#include "mathlink.h"

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

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

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