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_TIMOUTOpenTP1のロックサービス定義で指定した待ち時間でタイムアウトが発生したため,資源を確保できませんでした。
    DCLCKER_MEMORY排他制御用のテーブルが不足しています。
    DCLCKER_OUTOFTRNトランザクション処理でないUAPから指定しています。
    DCLCKER_VERSIONOpenTP1のライブラリとロックサービスのバージョンが一致していません。

 

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_VERSIONOpenTP1のライブラリとロックサービスのバージョンが一致していません。

 

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_VERSIONOpenTP1のライブラリとロックサービスのバージョンが一致していません。