17.4.5 複数のリクエストを受信
send_multiple_requests_deferredを使用してリクエストのシーケンスを送信した場合は,poll_next_responseメソッドとget_next_responseメソッドを使用して,サーバから各リクエストについて送信される応答を受信します。
VisiBroker ORBメソッドpoll_next_responseを使用すると,サーバから応答を受信したかどうかを調べることができます。このメソッドは,一つでも応答があればtrue(真)を返し,何も応答がなければfalse(偽)を返します。
VisiBroker ORBメソッドget_next_responseを使用すると,応答を受信できます。何も応答がなければ,このメソッドは応答を受信するまで待ち続けます。クライアントプログラムを待たせ続けたくない場合は,まずpoll_next_responseメソッドを使用して応答が入手できるかどうかを調べ,次にget_next_responseメソッドを使用して結果を受信します。コードサンプル17-23に複数のリクエストを送受信するVisiBroker ORBのメソッド(C++),コードサンプル17-24に複数のリクエストを送受信するVisiBroker ORBのメソッド(Java)を示します。
- コードサンプル17-23 複数のリクエストを送信し結果を受信するVisiBroker ORBメソッド(C++)
class CORBA { class ORB { . . . typedef sequence <Request_ptr> RequestSeq; void send_multiple_requests_oneway(const RequestSeq &); void send_multiple_requests_deferred(const RequestSeq &); Boolean poll_next_response(); Status get_next_response(); . . . }; };
- コードサンプル17-24 複数のリクエストを送信し結果を受信するVisiBroker ORBメソッド(Java)
package org.omg.CORBA; public abstract class ORB { public abstract org.omg.CORBA.Environment create_environment(); public abstract void send_multiple_requests_oneway( org.omg.CORBA.Request[ ] reqs); public abstract void send_multiple_requests_deferred( org.omg.CORBA.Request[ ] reqs); public abstract boolean poll_next_response(); public abstract org.omg.CORBA.Request get_next_response(); . . . }