名前
CORBA::ORB::string_to_object
形式
#include <orb_cplus.h>
Object_ptr CORBA::ORB::string_to_object(
const char *str,
CORBA::Environment& env );機能説明
strで指定した文字列を元にオブジェクトリファレンスを取得します。“アプリケーション作成ガイド(CORBAサービス編)”の“URLスキーマ”に記述されているすべての形式の文字列を指定できます。ただし、文字列に日本語を含むことはできません。
本関数はオブジェクトリファレンスを格納する領域を獲得するため、この領域が不要になった時点で、CORBA::release()を使用して領域を解放する必要があります。
パラメタ
オブジェクトリファレンスを取得するための文字列。
例外情報が格納される構造体。
復帰値
正常終了した場合、オブジェクトリファレンスが設定されます。
異常終了した場合、envのexceptionメンバにSystemExceptionオブジェクトのオブジェクトリファレンスが設定され、SystemException_idに詳細情報が設定されます。_idの値と意味は次のとおりです。設定されたマイナーコードの意味については、“メッセージ集”の“CORBAサービスから通知される例外情報/マイナーコード”を参照してください。
指定されたURLスキーマの形式に誤りがあります。
備考
strにはCORBA::ORB::object_to_string()によって取得できる“IOR:”で始まる形式の文字列の他、“cobaloc”や“corbaname”で始まる形式の文字列も指定が可能です。詳細は“アプリケーション作成ガイド(CORBAサービス編)”の“URLスキーマ”を参照してください。
なお、URLスキーマを指定した場合、URL内に指定したホストと通信を行ってオブジェクトリファレンスを取得します。この際、ホストの名前解決が必要な場合があります。
使用例
URLスキーマを使用するサンプル
int main(int argc, char **argv)
{
CORBA::ORB_ptr orb;
CORBA::Object_ptr obj_ns, obj_sv, obj_sv2;
CORBA::Environment_ptr env = new CORBA::Environment;
int current_argc = argc;
orb = CORBA::ORB_init( current_argc, argv, FJ_OM_ORBid, *env );
CosNaming::NameComponent_ptr
name_component = new CosNaming::NameComponent;
name_component->id = (const CORBA::Char *)"test1::intf1";
name_component->kind = (const CORBA::Char *)"";
CosNaming::NameComponent_var
*name_component_var = CosNaming::Name::allocbuf(1);
name_component_var[0] = name_component;
CosNaming::Name_ptr
name = new CosNaming::Name( 1, 1, name_component_var, CORBA_TRUE );
obj_ns = orb->string_to_object(
"corbaloc::nshost:8002/NameService",
*env );
CosNaming::NamingContext_ptr
NamingContext_obj = CosNaming::NamingContext::_narrow( obj_ns );
obj_sv = NamingContext_obj->resolve( *name, *env );
test1::intf1_ptr ap1 = test1::intf1::_narrow( obj_sv );
test1::intf1_var av1 = ap1;
av1->add( 1, 2, *env );
obj_sv2 = orb->string_to_object(
"corbaname::nshost:8002/NameService#test1::intf1",
*env );
test1::intf1_ptr ap2 = test1::intf1::_narrow( obj_sv2 );
test1::intf1_var av2 = ap2;
av2->add( 1, 2, *env );
return 0;
}
|