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)
このオペレーションは事前に登録された指定のタイプのリスナーを削除します。