Interstage Application Server アプリケーション作成ガイド (コンポーネントトランザクションサービス編)
目次 索引 前ページ次ページ

第5章 Interstageの特徴的な機能> 5.3 セション情報管理機能を使用したトランザクションアプリケーションの作成> 5.3.2 セション情報域を操作するオブジェクト

5.3.2.5 IDL

 セション情報管理が実装するIDLは、次のとおりです。
 インタフェースの詳細については、“リファレンスマニュアル(API編)”を参照してください。

module ISTD {

    interface SMO {

        // クライアント識別子のデータ型
        const unsigned long     ClientIdLen = 48;             // クライアント識別子長
        typedef sequence<octet,ClientIdLen> ClientId;         // クライアント識別子型
    
    // セションIDのデータ型

     const unsigned long      SessionIdLen = 48;             // セションID長
     typedef octet            SessionId[SessionIdLen];       // セションID型

        // ユーザ例外処理の定義
        exception InvalidArgument { string reason; };        // パラメタ異常
        exception ProcessFailed   {};                        // 処理異常
        exception AlreadyExist    {};                        // 既登録
        exception NotExist        {};                        // 対象セション情報域なし
        exception NotRegistered   {};                        // 対象リスナ未登録

        // create_info の復帰値
        const unsigned long     TD_OK_NEW   = 0;             // 新規生成
        const unsigned long     TD_OK_OLD   = 1;             // 既存セション情報域返却

        // セション情報域型
        typedef sequence<octet> SessionInfo;

        //
        // --- operations for client id ---
        //
        long create_info(       // セション情報域の獲得
            in  ClientId                CLIENT_ID,
            in  unsigned long           slotno,
            in  unsigned long           size,
            in  unsigned long           lifetime
            ) raises( InvalidArgument, ProcessFailed, AlreadyExist );

        void set_info(          // セション情報域へのデータを書込
            in  ClientId                CLIENT_ID,
            in  unsigned long           slotno,
            in  SessionInfo             data
            ) raises( InvalidArgument, NotExist );

        void get_info(          // セション情報域からのデータを読込
            in  ClientId                CLIENT_ID,
            in  unsigned long           slotno,
            out SessionInfo             data
            ) raises( InvalidArgument, NotExist );

        void delete_info(       // セション情報域の解放
            in  ClientId                CLIENT_ID,
            in  unsigned long           slotno
            ) raises( InvalidArgument, NotExist );

        void add_listener(      // リスナの登録
            in  Object                  LISTENER_OR
            ) raises( InvalidArgument );
        
        void del_listener(      // リスナの抹消
            in  Object                  LISTENER_OR
            ) raises( InvalidArgument, NotRegistered );

        //
    // --- operatoins for session id ---
    //
    long create_info2(       // セション情報域の獲得
          in  SessionId               SESSION_ID,
          in  unsigned long           slotno,
          in  unsigned long           size,
          in  unsigned long           lifetime
          ) raises( InvalidArgument, ProcessFailed, AlreadyExist );

    void set_info2(          // セション情報域へのデータを書込
          in  SessionId               SESSION_ID,
          in  unsigned long           slotno,
          in  SessionInfo             data
          ) raises( InvalidArgument, NotExist );

    void get_info2(          // セション情報域からのデータを読込
          in  SessionId               SESSION_ID,
          in  unsigned long           slotno,
          out SessionInfo             data
          ) raises( InvalidArgument, NotExist );

    void delete_info2(       // セション情報域の解放
          in  SessionId               SESSION_ID,
          in  unsigned long           slotno
          ) raises( InvalidArgument, NotExist );

    void add_listener2(      // リスナの登録
          in  Object                  LISTENER_OR
          ) raises( InvalidArgument );
        
    void del_listener2(      // リスナの抹消
          in  Object                  LISTENER_OR
          ) raises( InvalidArgument, NotRegistered );

    };  // SMO


    interface SMO_LISTENER { // 事象通知リスナインタフェース(クライアント識別子用)

        // クライアント識別子のデータ型
        const unsigned long     ClientIdLen = 48;             // クライアント識別子長
        typedef sequence<octet,ClientIdLen> ClientId;         // クライアント識別子型
    
        // セション情報域型
        typedef sequence<octet> SessionInfo;

        // 事象通知データ型(クライアント識別子用)
        struct SlotInfo { 
            ClientId            CLIENT_ID;
            unsigned long       slotno;
            SessionInfo         data;
        };
        typedef sequence<SlotInfo> DelSlotInfo;
        
        void timeout(           // イベント受信
            in  DelSlotInfo            data
            );

    }; // SMO_LISTENER

    interface SMO_LISTENER2 { // 事象通知リスナインタフェース(セションID用)

    // セションIDのデータ型
      const unsigned long      SessIdLen = 48;              // セションID長
      typedef octet            SessionId[SessIdLen];        // セションID型

        // セション情報域型
        typedef sequence<octet> SessionInfo;

        // 事象通知データ型(セションID用)
        struct SlotInfo { 
            SessionId           SESSION_ID;
            unsigned long       slotno;
            SessionInfo         data;
        };
        typedef sequence<SlotInfo> DelSlotInfo;
        
        void timeout(           // イベント受信
            in  DelSlotInfo            data
            );

    }; // SMO_LISTENER2

};

注意

 本IDLは、セション情報管理のインタフェース情報を示すためのものです。本IDLをIDLコンパイラに適用する必要はありません。また、本IDLをIDLコンパイラに適用して生成されたスタブファイル、およびスケルトンファイルは、セション情報管理との通信には使用できません。セション情報管理のスタブおよびスケルトンは、提供ライブラリに含まれます。


目次 索引 前ページ次ページ

All Rights Reserved, Copyright (C) 富士通株式会社 2005