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が終了している状態