PropagationContext構造体

 

PropagationContext構造体は次のような構成になっています。

 

struct otid_t {
        long formatID;  /* format identifier. 0 is OSI TP */
        long bqual_length;
        sequence <octet> tid;
};
struct TransIdentity {
        Coordinator coord;
        Terminator term;
        otid_t otid;
};
struct PropagationContext {
        unsigned long timeout;
        TransIdentity current;
        sequence <TransIdentity> parent;
        any implementation_specific_data;
};



otid_t構造体

otid_t構造体は、トランザクション識別子情報を格納するのに使用します。ここにはフォーマット識別子(formatID)、ブランチ識別子のレングス(bqual_length)、トランザクション識別子(tid)が格納されます。フォーマット識別子は、WebOTX Transaction Serviceのリカバリサーバを利用した場合、固定の数字(0xEF686)が入ります。また、トランザクション識別子は、グローバル識別子と、ブランチ識別子をつなげたもので構成されます。

TransIdentity構造体

TransIdentity構造体は、1つのトランザクションの情報を格納するのに使用します。Coordinatorオブジェクト、Terminatorオブジェクト、トランザクション識別子情報を格納するotidで構成されます。

PropagationContext構造体

PropagationContext構造体は、主にトランザクションの伝播を行う場合に使用します。この中には次のような情報が格納されます。

timeout

トランザクションのタイムアウト値を格納します。CosTransactions::Current::set_timeoutメソッド、CosTransactions::TransactionFactory::createメソッドで指定した値、あるいはデフォルト値(WebOTX Transaction Serviceでは600秒)が入ります。

current

カレントトランザクションの情報を格納します。

parents

カレントトランザクションの親の情報を格納します。TransIdentity構造体のシーケンスになっています。シーケンスの順序はカレントトランザクションの親でスタートし、トップレベルのトランザクションまで全先祖の情報を格納します。

implementation_specific_data

この情報はWebOTX Transaction Serviceで独自に使用する情報を格納しています。