Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 OpenTP1 プログラム作成リファレンス C言語編


tx_info

〈このページの構成〉

名称

現在のトランザクションに関する情報の返却

形式

ANSI C ,C++ の形式

#include <tx.h>
int  tx_info(TXINFO *info)

K&R版 Cの形式

#include <tx.h>
int  tx_info(info)
TXINFO   *info;

機能

関数tx_info()は,グローバルトランザクションの情報を,infoで指す構造体に返します。さらに,tx_info()は呼び出し元が現在トランザクションモードにあるかどうかを示す値を返します。

『引数』

『●info』

infoにnull以外を設定した場合は,tx_info()はinfoで示すTXINFO構造体へ,グローバルトランザクションの情報を設定します。TXINFO構造体は次のような要素を含んでいます。

XID                    xid;
COMMIT_RETURN          when_return;
TRANSACTION_CONTROL    transaction_control;
TRANSACTION_TIMEOUT    transaction_timeout;
TRANSACTION_STATE      transaction_state;

トランザクションモードでtx_info()を呼び出した場合は,xidには現在のトランザクションブランチの識別子と,transaction_stateの値が設定されます。

トランザクションモードでない呼び出し元からtx_info()を呼び出した場合には,xidにnull XIDが設定されます(詳細は<tx.h>を参照)。さらに,呼び出し元がトランザクションモードであるかないかにかかわらず,when_return,transaction_control,transaction_timeoutは,現在設定されているwhen_return,transaction_controlと秒単位のトランザクションタイムアウト値と同じ値になります。

返されたトランザクションタイムアウト値は,次のトランザクションモードが開始されたときに設定されて反映されます。しかし,呼び出し元の現在のトランザクションでは,タイムアウト値に反映されていない場合もあります。その理由は,現在のトランザクションの開始後tx_set_timeout()が呼び出された場合,timeout値を変更しているかもしれないからです。

infoにnullを設定した場合は,TX_INFO構造体は返されません。

リターン値

関数の呼び出し元がトランザクションモードの場合は,1が返ります。関数の呼び出し元がトランザクションモードでない場合は,0が返ります。

エラー

次のような場合,tx_info()はエラーリターンして,次のうちどれか一つの値を返します。これは,負のリターン値です。

リターン値

リターン値(数値)

意味

TX_PROTOCOL_ERROR

-5

関数は,適切でないコンテクストで呼ばれました(例えば,呼び出し元がまだtx_open()を呼び出していない)。

TX_FAIL

-7

トランザクションマネジャで,回復できないエラーが発生しました。トランザクションマネジャが,すでにアプリケーションに代わって作業できないことがエラーの原因であることを示します。

アプリケーションの使い方

同じグローバルトランザクション内で,複数回のtx_info()を呼び出すと,tx_info()への呼び出しでは,gtrid(グローバルトランザクション識別子)に同じXIDが供給されることを保証されています。しかし,bqual(ブランチ限定子)が同じかどうかは一概にはいえません。

参照

tx_open(),tx_set_commit_return(),tx_set_transaction_control(),tx_set_transaction_timeout()

『指定例』

『if (tx_info(NULL) != 1)
    fputs("not transaction mode\n",stderr);』