22.2.1 IDL定義
インタフェース定義を次に示します。
module EventQueue { // Connection event types enum EventType {UNDEFINED, CONN_EVENT_TYPE}; // Peer (Client)connection info struct ConnInfo { string ipaddress; // in %d.%d.%d.%d format long port; long connID; }; // Marker interface for all types of event listeners local interface EventListener {}; typedef sequence<EventListener> EventListeners; // connection event listener interface local interface ConnEventListener : EventListener{ void conn_established(in ConnInfo info); void conn_closed(in ConnInfo info); }; // The EventQueue manager local interface EventQueueManager : interceptor::InterceptorManager { void register_listener(in EventListener listener, in EventType type); void unregister_listener(in EventListener listener, in EventType type); EventListeners get_listeners(in EventType type); }; };
インタフェース定義の詳細を以降で説明します。
- 〈この項の構成〉
(1) ConnInfo構造体
ConnInfo構造体には次のようなクライアントコネクション情報があります。
-
ipaddress : 通信相手のIPアドレスを格納します。
-
port : 通信相手のポート番号を格納します。
-
connID : このクライアントコネクションのサーバごとの一意の識別子を格納します。
(3) ConnEventListenersインタフェース
ConnEventListenersインタフェースは次のように二つのオペレーションを定義します。
-
void conn_established (in ConnInfo info)
このオペレーションはVisiBroker ORBによってコールバックされ,コネクション設定イベントをプッシュします。VisiBroker ORBはin ConnInfo infoパラメタにクライアントコネクション情報を与えて,この値をコールバックオペレーションに渡します。
-
void conn_closed (in ConnInfo info)
このオペレーションはVisiBroker ORBによってコールバックされ,コネクションクローズイベントをプッシュします。VisiBroker ORBはin ConnInfo infoパラメタにクライアントコネクション情報を与えて,この値をコールバックオペレーションに渡します。
サーバ側アプリケーションは,リスナーにプッシュされているイベントの処理と同様,ConnEventListenerインタフェースのインプリメンテーションにも責任があります。
(4) EventQueueManagerインタフェース
EventQueueManagerインタフェースは,イベントリスナーの登録に関するサーバ側インプリメンテーションによってハンドルとして使用されます。このインタフェースは次のように三つのオペレーションを定義します。
-
void register_listener (in EventListener listener, in EventType type)
このオペレーションは,指定のイベントタイプのイベントリスナーの登録用に用意されています。
-
EventListeners get_listeners (in EventType type)
このオペレーションは指定のタイプの登録済みイベントリスナーのリストを返します。
-
void unregister_listener (in EventListener listener, in EventType type)
このオペレーションは事前に登録された指定のタイプのリスナーを削除します。