Interstage Application Server アプリケーション作成ガイド (CORBAサービス編)
目次 索引 前ページ次ページ

第5章 アプリケーションの開発(C++言語)> 5.1 クライアントアプリケーションのプログラミング> 5.1.2 動的起動インタフェース

5.1.2.7 リクエストの送信

 サーバアプリケーションに対してリクエストを出します。リクエストの方法として、同期送信と非同期送信の2つの方法があります。

(1)同期送

 CORBA::Request::invoke()により、サーバアプリケーションを呼び出します。パラメタとして、リクエストオブジェクトのオブジェクトリファレンスを指定します。

  request->invoke( env );

(2)非同期送

 CORBA::Request::send_deferred()により、サーバアプリケーションを呼び出します。パラメタとして、リクエストオブジェクトのオブジェクトリファレンスを指定します。サーバアプリケーションの処理結果は、CORBA::Request::get_response()により受け取ります。パラメタとして、リクエストオブジェクトのオブジェクトリファレンスを指定します。

  request->send_deferred( env ); // 処理の要求
  request->get_response( env );  // 処理結果の受け取り

 CORBA::Request::get_response()サーバアプリケーションからリクエストが完了していないことが判明した場合、再度CORBA::Request::get_response()を呼び出します。

処理結果の取り出し

 処理結果を受け取った後、CORBA::NVList::item()により、サーバアプリケーションから受け取ったパラメタ情報を取り出します。パラメタ情報の取り出しの詳細については、“データ型に対するマッピング”の“動的インタフェースでのパラメタの獲得/解放”を参照してください。

  CORBA::NamedValue_ptr nv; 

  // 処理結果の取り出し
  nv = arg_list->item(1, env);  // 1番目のパラメタの取り出し
  CORBA::Any *ap = nv->value( env );
  CORBA::Long *p = (CORBA::Long *)ap->value();

  cout << *(CORBA::Long *)p << endl;   // 結果の出力

目次 索引 前ページ次ページ

All Rights Reserved, Copyright(C) 富士通株式会社 2005