POAManagerの生成とPOAの活性化
Simple Wiki Based Contents Management System
ソフトウェア関連 >> ライブラリ >> RtORBについて >> RtORBの動作について >> POAManagerの生成とPOAの活性化

POAManagerの生成

本来は、POAの状態を管理するのは、POAManagerの役割。そのため、POAManagerを生成する。
現在は、POAManagerとPOAは同一オブジェクトになっており、かつ、POAは、RootPOAしか許さないようになっているので、
 PortableServer_POA__get_the_POAManager(poa, &env);
の結果は、The_RootPOAと同じになる。

POAの活性化

POAManagerを介してPOAを有効化する。
PortableServer_POAManager_activate(poa_manager, &env); 
前述のようにPOAManagerとPOAは同一オブジェクトと定義している。そのため、''PortableServer_POA_activate関数''を内部で呼んでいるのみである。

PortableServer_POA_activate関数

引数で与えられた PortableServer_POAの状態をチェックし、対応するSoket記述子にリクエストキューを生成する''PortableServer_enqueue_request関数''を''set_SockProfile関数''でcommand_procに登録する。
POAを活性化するには、状態が、''POA_HOLDING''である必要がある。

set_SockProfile関数

引数で与ええあれたSocket記述子に対応したsockport_prpofile構造体に、type、connection_proc、disconnect_proc、command_procの各コールバック関数をセットする。
ここで、typeは、''SOCK_CLOSED'', ''SOCK_SERVER'', ''SOCK_SERVICE'', ''SOCK_CLIENT''のどれかになる。CORBAサーバントの場合には、SOCK_SERVERがセットされる。

POAの状態

POAは、5つの状態を持つ。
  • ''POA_HOLDING'': POAが生成された状態
  • ''POA_ACTIVE'':  POAが活性化している状態
  • ''POA_INACTIVE'':POAが非活性の状態
  • ''POA_DISCARDING'':POAが終了する前段階
  • ''POA_TERMINATE'':POAが終了している状態