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構造体
(2) EventListenerインタフェース
(3) ConnEventListenersインタフェース
(4) EventQueueManagerインタフェース

(1) ConnInfo構造体

ConnInfo構造体には次のようなクライアントコネクション情報があります。

(2) EventListenerインタフェース

EventListenerインタフェースの部分は,すべてのタイプのイベントリスナーのマーカーインタフェースです。

(3) ConnEventListenersインタフェース

ConnEventListenersインタフェースは次のように二つのオペレーションを定義します。

このオペレーションはVisiBroker ORBによってコールバックされ,コネクション設定イベントをプッシュします。VisiBroker ORBはin ConnInfo infoパラメタにクライアントコネクション情報を与えて,この値をコールバックオペレーションに渡します。

このオペレーションはVisiBroker ORBによってコールバックされ,コネクションクローズイベントをプッシュします。VisiBroker ORBはin ConnInfo infoパラメタにクライアントコネクション情報を与えて,この値をコールバックオペレーションに渡します。

サーバ側アプリケーションは,リスナーにプッシュされているイベントの処理と同様,ConnEventListenerインタフェースのインプリメンテーションにも責任があります。

(4) EventQueueManagerインタフェース

EventQueueManagerインタフェースは,イベントリスナーの登録に関するサーバ側インプリメンテーションによってハンドルとして使用されます。このインタフェースは次のように三つのオペレーションを定義します。