コンテンツフレーム起動

RfcListen 文書を SAP ライブラリストラクチャに組み込む

RFC_RC SAP_API RfcListen(RFC_HANDLE handle);

を使用して、利用できる RFC 依頼があるかどうかをチェックすることができます。

RFC コールへの応答を待機したくない場合には、以下の機能( RfcReceive以外)を利用して送られてくる RFC イベントポーリングできます。

この機能では常に制御が即座に返されます。 RfcListen RFC_OK を返す場合、イベントを処理するために RfcReceive を呼び出す必要があります。一回にチェックできる受信 RFC メッセージは 1 つに限られます。

RfcDispatchによって新規 RFC 依頼を待機する間に、登録モード( RfcAccept参照)を使用または使用しないで、 RfcListen を使用することができます。 RfcListen は直ちに戻りますので、新規 RFC を待機するために RfcWaitForRequestを使用するよう推奨します。

この機能は SAPRFC.H 内に定義されます。

戻り値 :

機能パラメータ :

例

リモートファンクションコールの応答を待機している間に RfcListen を使用します。

RFC_RC rc;

rc = RfcCall(handle, ...);

do
{
rc = RfcListen(handle);
if(rc == RFC_RETRY)
{
// while waiting for the RFC answer, do something ...
...
}
} while (rc == RFC_RETRY);

if(rc == RFC_OK)
rc = RfcReceive(handle, ...);

...

例

RfcListen および RfcDispatch を使用します。

RFC_RC rc;
RFC_HANDLE handle = RfcAccept(argv);

...

do
{
// Waiting for the next RFC request
for(rc = RFC_RETRY; rc == RFC_RETRY;)
{
rc = RfcListen(handle);
if(rc == RFC_RETRY)
{
// while waiting for the next RFC request, do something ...
...
}
}
if (rc != RFC_OK)
break;

rc = RfcDispatch(handle);

} while(rc == RFC_OK);

RfcClose(handle);
exit(0);

ノート

RFC ライブラリへの多くのコールは「ブロック」します。つまり、通信が完了するまで制御を返しません。 RfcListen 機能を使用すればこの障害を克服することができます。 RfcListen は、依頼があるかどうかをチェックします。依頼がない場合、プログラムを起動し、実行することができます。しかし、コールが処理中のとき、 RfcListen は結果をバッファに入れて発送するので、ブロックは発生しません。したがって結果が失われることはありません。

 

 

 

コンテンツフレーム終了