27.15.3 ORBInitInfoのメソッド
-
virtual CORBA::StringSequence* arguments() = 0;
このメソッドは,ORB_init()に渡された引数を返します。この引数には,ORBの引数が含まれる場合も,含まれない場合もあります。
-
このメソッドは,初期化中のORBのIDを返します。
-
virtual IOP::CodecFactory_ptr codec_factory() = 0;
このメソッドは,IOP::CodecFactoryを返します。通常,CodecFactoryは,ORB::resolve_initial_references("CodecFactory")を呼び出して取得しますが,その時点では,ORBはまだ使用できません。しかし,サービスコンテキスト処理時などに,インタセプタがCodecを必要とするため,Codecを取得する手段がORBの初期化時に必要となります。
-
virtual void register_initial_reference(
const char* _id, CORBA::Object_ptr _obj) = 0;
例えば,このメソッドがID「Y」とオブジェクト「YY」で呼び出されたあとに,register_initial_referenceメソッドが再び呼び出されると,オブジェクト「YY」が返されます。
このメソッドの機能は,ORB::register_initial_reference()と同一です。このメソッドは,ORBが完全に初期化されていないためにまだ使用できない場合に,インタセプタの登録の一部として初期リファレンスが必要となるときに使用します。なお,このメソッドとORB::register_initial_reference()との違いは,ORBのメソッドのバージョンはPIDL(CORBA::ORB::ObjectIdとCORBA::ORB::InvalidName)を使用し,インタフェースのバージョンは,インタフェースに定義されたIDLを使用する点です。構文に違いはありません。
このメソッドが空文字列IDで呼び出された場合,またはこのメソッドがすでに登録されているIDで呼び出された場合(OMG定義済みの既定の名前で呼び出された場合も含みます)は,register_initial_reference()でInvalidName例外が発生します。
-
_id
初期リファレンスを認識するためのID
-
_obj
初期リファレンス
-
-
virtual CORBA::Object_ptr resolve_initial_references(
const char* _id) = 0;
このメソッドは,post_init()呼び出し時にだけ有効です。このメソッドの機能はORB::resolve_initial_references()と同一です。このメソッドは,ORBが完全に初期化されていないためにまだ使用できないときに,インタセプタの登録の一部として初期リファレンスが必要となる場合に使用します。
-
_id
初期リファレンスを認識するためのID
解決する名前が不正な場合,resolve_initial_references()ではInvalidName例外が発生します。
-
-
virtual void add_client_request_interceptor(
ClientRequestInterceptor_ptr _interceptor) = 0;
このメソッドは,クライアント側リクエストインタセプタの一覧に項目を追加するときに使用します。同じ名前のクライアント側リクエストインタセプタがすでに存在している場合は,DuplicateName例外が発生します。
-
_interceptor
追加するClientRequestInterceptor
-
-
virtual void add_server_request_interceptor(
ServerRequestInterceptor_ptr _interceptor) = 0;
このメソッドは,サーバ側リクエストインタセプタの一覧に項目を追加するときに使用します。同じ名前のサーバ側リクエストインタセプタがすでに存在している場合は,DuplicateName例外が発生します。
-
_interceptor
追加するServerRequestInterceptor
-
-
virtual void add_ior_interceptor(
IORInterceptor_ptr _interceptor) = 0;
このメソッドは,IORインタセプタの一覧に項目を追加するときに使用します。同じ名前のIORインタセプタがすでに存在している場合は,DuplicateName例外が発生します。
-
_interceptor
追加するIORInterceptor
-
-
virtual CORBA::ULong allocate_slot_id() = 0;
このメソッドは,割り当て済みスロットのインデックスを返します。
サービスは,allocate_slot_idを呼び出してPortableInterceptor::Currentのスロットを割り当てます。
- 注
-
スロットIDの割り当ては,ORBイニシャライザの内部でできますが,スロット自体は初期化できません。ORBイニシャライザの内部でCurrentのset_slot()またはget_slot()を呼び出すと,マイナーコード14のBAD_INV_ORDER例外が発生します。詳細については,「27.6 Current」を参照してください。
-
virtual void register_policy_factory(
CORBA::ULong _type, PolicyFactory_ptr _policy_factory) = 0;
このメソッドは,指定したPolicyTypeのPolicyFactoryを登録します。
指定したPolicyTypeのPolicyFactoryがすでに登録されている場合は,標準マイナーコード16のBAD_INV_ORDER例外が発生します。
-
_type
指定したPolicyFactoryのCORBA::PolicyType
-
_policy_factory
指定したCORBA::PolicyTypeのファクトリ
-