Hitachi

OpenTP1 Version 7 分散トランザクション処理機能 TP1/Extension for .NET Framework 使用の手引


Lck 【TP1/Server Base】

〈このページの構成〉

Lckの概要

名前空間

Hitachi.OpenTP1.Server

継承関係

System.Object
  +- Hitachi.OpenTP1.Server.Lck

説明

Lckクラスは,任意のユーザファイルを排他制御するメソッドを提供します。

Lckクラスのメソッドは,TP1/Server BaseのUAPでだけ使えます。TP1/LiNKのUAPでは,Lckクラスのメソッドは使えません。

メソッドの一覧

名称

説明

Get(System.String, System.Int32, System.Int32)

UAPで使う資源の排他を指定します。

ReleaseAll()

Getメソッドで指定した資源の排他をすべて解除します。

ReleaseByName(System.String)

Getメソッドで指定した資源の排他を,資源名称を指定して解除します。

メソッドの詳細

Get

説明

UAPで使う資源の排他を指定します。排他の管理は,OpenTP1のトランザクションマネジャで管理するグローバルトランザクション単位で処理されます。

ここで指定した排他は,排他を解除するメソッド(Lck.ReleaseAllメソッド,Lck.ReleaseByNameメソッド)を呼び出すか,Getメソッドを呼び出したグローバルトランザクションの同期点取得後に解除されます。

宣言
【C#の場合】
public static void Get(
    string name,
    int lockMode,
    int flags
);
【Visual Basicの場合】
Public Shared Sub Get( _
    ByVal name As String, _
    ByVal lockMode As Integer, _
    ByVal flags As Integer _
)
【J#の場合】
public static void Get(
    System.String name,
    int lockMode,
    int flags
);
パラメタ
name

排他する資源の名称を,16文字の半角英数字文字列で設定します。ここで設定した資源名称を基に,ロックサービスで排他を管理します。16文字未満の場合は,設定した値がそのまま資源名称とみなされます。16文字を超えた値を設定した場合は,16文字までが資源名称とみなされ,超えた部分は切り捨てられます。

ロックサービスでは,文字列の内容についてはチェックしません。論理的に正しい名称を設定してください。資源名称に半角英数字以外の値を使った場合は,デッドロック情報,タイムアウト情報,およびlcklsコマンドの表示が乱れたり,資源名称が途中で切り捨てられる場合があります。

lockMode

排他制御モードを設定します。排他制御モードは次のどちらか一方を設定してください。重複して設定できません。

  • TP1ServerFlags.DCLCK_PR

    資源を参照します。ほかのUAPには参照だけを許可します。

  • TP1ServerFlags.DCLCK_EX

    資源を更新します。ほかのUAPには参照も更新も禁止します。

flags

資源の排他に関するフラグを設定します。設定できる値を次に示します。

  • TP1ServerFlags.DCLCK_WAIT

    ほかのUAPと資源を競合した場合に,資源の解放待ちにします。このフラグが設定されてない場合に競合したときは,例外応答します。

  • TP1ServerFlags.DCLCK_TEST

    資源が使えるかどうかをテストするときに設定します。このフラグを設定したときは,Getメソッドが正常終了しても,nameに設定した資源は確保されていないので注意してください。

  • TP1ServerFlags.DCNOFLAGS

    フラグを設定しません。

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)

    例外が発生する原因となった引数名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCLCKER_PARAM

    引数に設定した値が間違っています。

    DCLCKER_WAIT

    ほかのUAPが,nameに名称を設定した資源を使っています。

    DCLCKER_DLOCK

    デッドロックが起こりました。

    DCLCKER_TIMOUT

    OpenTP1のロックサービス定義で指定した待ち時間でタイムアウトが発生したため,資源を確保できませんでした。

    DCLCKER_MEMORY

    排他制御用のテーブルが不足しています。

    DCLCKER_OUTOFTRN

    トランザクション処理でないUAPから指定しています。

    DCLCKER_VERSION

    OpenTP1のライブラリとロックサービスのバージョンが一致していません。

ReleaseAll

説明

Getメソッドで指定した資源の排他をすべて解除します。同期点取得前に排他を解除するときに,ReleaseAllメソッドを呼び出します。

排他をしたグローバルトランザクションが終了したときに,OpenTP1のロックサービスによって自動的に排他は解除されます。このときは,UAPで排他を解除する必要はありません。

宣言
【C#の場合】
public static void ReleaseAll(
);
【Visual Basicの場合】
Public Shared Sub ReleaseAll( _
)
【J#の場合】
public static void ReleaseAll(
);
パラメタ

なし

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)

    例外が発生する原因となった引数名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCLCKER_OUTOFTRN

    トランザクション処理でないUAPからReleaseAllメソッドを呼び出しています。

    DCLCKER_NOTHING

    このメソッドを呼び出したトランザクションでは,資源を確保していません。

    DCLCKER_VERSION

    OpenTP1のライブラリとロックサービスのバージョンが一致していません。

ReleaseByName

説明

Getメソッドで指定した資源の排他を,資源名称を指定して解除します。同期点取得前に排他を解除するときに,ReleaseByNameメソッドを呼び出します。

排他をしたグローバルトランザクションが終了したときに,ロックサービスによって自動的に排他は解除されます。このときは,UAPで排他を解除する必要はありません。

宣言
【C#の場合】
public static void ReleaseByName(
    string name
);
【Visual Basicの場合】
Public Shared Sub ReleaseByName( _
    ByVal name As String _
)
【J#の場合】
public static void ReleaseByName(
    System.String name
);
パラメタ
name

排他の指定を解除する資源名称を設定します。資源名称はGetメソッドで設定した名称と同じ値を設定してください。

戻り値

なし

例外
Hitachi.OpenTP1.Server.TP1ServerException

次の情報が出力されます。

  • メッセージ

    OpenTP1提供関数内でエラーが発生した場合は,次のように出力されます。

    "OpenTP1提供関数実行時にエラーが発生しました。"

    それ以外の場合は,各エラーに対応したメッセージが出力されます。

  • クラス名

    例外が発生したクラス名が出力されます。

  • メソッド名

    例外が発生したメソッド名が出力されます。

  • 引数名(OpenTP1提供関数呼び出し前の引数チェックでエラーになった場合にだけ出力)

    例外が発生する原因となった引数名が出力されます。

  • エラーコード

    発生原因に応じ,次のエラーコードが出力されます。

    エラーコード

    説明

    DCLCKER_PARAM

    引数に設定した値が間違っています。

    DCLCKER_OUTOFTRN

    トランザクション処理でないUAPからReleaseByNameメソッドを呼び出しています。

    DCLCKER_NOTHING

    解除を指定した資源名称に該当する資源がありません。

    DCLCKER_VERSION

    OpenTP1のライブラリとロックサービスのバージョンが一致していません。