Hitachi

VisiBroker Version 5 Borland(R) Enterprise Server VisiBroker(R) デベロッパーズガイド


17.4.1 リクエストを起動

リクエストを送信する最も単純な方法は,そのリクエストのinvokeメソッドを呼び出すことです。このメソッドはリクエストを送信し,応答を待ってからクライアントプログラムに戻ります。return_valueメソッドは,リターン値を表すAnyオブジェクトのポインタ(C++)またはリファレンス(Java)を返します。

コードサンプル17-18 invokeを使用してリクエストを送信する(C++)
try {
   . . .
   // Create request that will be sent to the account object
   request = account->_request("balance");
   // Set the result type
   request->set_return_type(CORBA::_tc_float);
   // Execute the request to the account object
   request->invoke();
   // Get the return balance
   CORBA::Float balance;
   CORBA::Any& balance_result = request->return_value();
   balance_result >>= balance;
   // Print out the balance
   cout << "The balance in " << name << "'s account is $"
         << balance << endl;
} catch(const CORBA::Exception& e) {
   cerr << e << endl;
   return 1;
}
return 0;
. . .
コードサンプル17-19 invokeを使用してリクエストを送信する(Java)
try {
   . . .
   // Create request that will be sent to the account object
   request = account._request("balance");
   // Set the result type
   request.set_return_type(orb.get_primitive_tc
                  (org.omg.CORBA.TCKind.tk_float));
   // Execute the request to the account object
   request.invoke();
   // Get the return balance
   float balance;
   org.omg.CORBA.Any balance_result = request.return_value();
   balance = balance_result.extract_float();
   // Print out the balance
   System.out.println("The balance in " + name +
                      "'s account is $" + balance);
} catch(Exception e) {
   e.printStackTrace();
}