LogRecordSequence.ReserveAndAppend メソッド

定義

1 つの予約を自動的に行い、レコードをシーケンスに追加します。

オーバーロード

名前 説明
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

1 つの予約を自動的に行い、レコードをシーケンスに追加します。 このメソッドは継承できません。

ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

1 つの予約を自動的に行い、レコードをシーケンスに追加します。 このメソッドは継承できません。

ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

1 つの予約を自動的に行い、レコードをシーケンスに追加します。 このメソッドは継承できません。

public:
 virtual System::IO::Log::SequenceNumber ReserveAndAppend(System::Collections::Generic::IList<ArraySegment<System::Byte>> ^ data, System::IO::Log::SequenceNumber userRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend(System.Collections.Generic.IList<ArraySegment<byte>> data, System.IO.Log.SequenceNumber userRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : System.Collections.Generic.IList<ArraySegment<byte>> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As IList(Of ArraySegment(Of Byte)), userRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber

パラメーター

data
IList<ArraySegment<Byte>>

レコードとして連結および追加されるバイト配列セグメントのリスト。

userRecord
SequenceNumber

ユーザー指定の順序での次のレコードのシーケンス番号。

previousRecord
SequenceNumber

次のレコードのシーケンス番号 (前の順序)。

recordAppendOptions
RecordAppendOptions

データの書き込み方法を指定する RecordAppendOptions の有効な値。

reservationCollection
ReservationCollection

予約を行う予約コレクション。

reservations
Int64[]

行う予約 (バイト単位)。

返品

追加されたログ レコードのシーケンス番号。

実装

例外

1 つ以上の引数が無効です。

レコードの追加中に I/O エラーが発生しました。

レコード シーケンスは、新しいレコードを格納したり、予約を行ったりするのに十分な空き領域を作成できませんでした。

シーケンスが破棄された後、メソッドが呼び出されました。

1 つ以上の引数が null

userRecord または previousRecord は、このシーケンスの基本シーケンス番号と最後のシーケンス番号の間にありません。

レコード シーケンスが読み取り専用アクセスで開かれたため、操作を実行できません。

プログラムの実行を続行するのに十分なメモリがありません。

指定したログ シーケンスへのアクセスは、オペレーティング システムによって拒否されます。

dataに収まる大きさの予約は、reservationsで見つかりません。

注釈

data パラメーターに含まれるデータは、レコードとして追加するために 1 バイト配列に連結されます。 ただし、レコードの読み取り時にデータを配列セグメントに分割するためのプロビジョニングは行われません。

指定された予約は、レコード追加操作を使用してアトミック操作で指定された予約コレクションに追加されます。 追加に失敗した場合、領域は予約されません。

通常、このメソッドは、レコードが書き込まれる前に完了する可能性があります。 レコードが確実に書き込まれるようにするには、recordAppendOptions パラメーターを使用して ForceFlush フラグを指定するか、Flush メソッドを呼び出します。

適用対象

ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

1 つの予約を自動的に行い、レコードをシーケンスに追加します。 このメソッドは継承できません。

public:
 virtual System::IO::Log::SequenceNumber ReserveAndAppend(ArraySegment<System::Byte> data, System::IO::Log::SequenceNumber nextUndoRecord, System::IO::Log::SequenceNumber previousRecord, System::IO::Log::RecordAppendOptions recordAppendOptions, System::IO::Log::ReservationCollection ^ reservationCollection, ... cli::array <long> ^ reservations);
public System.IO.Log.SequenceNumber ReserveAndAppend(ArraySegment<byte> data, System.IO.Log.SequenceNumber nextUndoRecord, System.IO.Log.SequenceNumber previousRecord, System.IO.Log.RecordAppendOptions recordAppendOptions, System.IO.Log.ReservationCollection reservationCollection, params long[] reservations);
abstract member ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
override this.ReserveAndAppend : ArraySegment<byte> * System.IO.Log.SequenceNumber * System.IO.Log.SequenceNumber * System.IO.Log.RecordAppendOptions * System.IO.Log.ReservationCollection * int64[] -> System.IO.Log.SequenceNumber
Public Function ReserveAndAppend (data As ArraySegment(Of Byte), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber

パラメーター

data
ArraySegment<Byte>

レコードとして連結および追加されるバイト配列セグメントのリスト。

nextUndoRecord
SequenceNumber

ユーザー指定の順序での次のレコードのシーケンス番号。

previousRecord
SequenceNumber

次のレコードのシーケンス番号 (前の順序)。

recordAppendOptions
RecordAppendOptions

データの書き込み方法を指定する RecordAppendOptions の有効な値。

reservationCollection
ReservationCollection

予約を行うコレクションを含む ReservationCollection

reservations
Int64[]

行う予約 (バイト単位)。

返品

追加されたログ レコードのシーケンス番号。

実装

例外

nextUndoRecord または previousRecord がこのシーケンスに対して無効です。

-または-

data は、最大レコード サイズより大きいため、追加できません。

-または-

reservations は、このレコード シーケンスによって作成されませんでした。

1 つ以上の引数が null

nextUndoRecord または previousRecord は、このシーケンスの基本シーケンス番号と最後のシーケンス番号の間にありません。

予期しない I/O 例外のため、要求を実行できませんでした。

-または-

I/O デバイス エラーのため、要求を実行できませんでした。

レコード シーケンスが読み取り専用アクセスで開かれたため、操作を実行できません。

シーケンスが破棄された後、メソッドが呼び出されました。

プログラムの実行を続行するのに十分なメモリがありません。

レコード シーケンスがいっぱいです。

指定したログ シーケンスへのアクセスは、オペレーティング システムによって拒否されます。

dataに収まる大きさの予約は、reservationsで見つかりません。

次の例は、このメソッドを使用して予約を行う方法を示しています。 このタスクは、CLFS ベースの LogRecordSequence クラスを使用する場合にのみ実行できることに注意してください。

ReservationCollection reservations = recordSequence.CreateReservationCollection();
long[] lengthOfUndoRecords = new long[] { 1000 };
recordSequence.ReserveAndAppend(recordData,
                                                     userSqn,
                                                     previousSqn,
                                                     RecordSequenceAppendOptions.None,
                                                     reservations,
                                                     lengthOfUndoRecords);
recordSequence.Append(undoRecordData,    // If necessary …
                                    userSqn,
                                    previousSqn,
                                    RecordSequenceAppendOptions.ForceFlush,
                                    reservations);

注釈

data パラメーターに含まれるデータは、レコードとして追加するために 1 バイト配列に連結されます。 ただし、レコードの読み取り時にデータを配列セグメントに分割するためのプロビジョニングは行われません。

指定された予約は、レコード追加操作を使用してアトミック操作で指定された予約コレクションに追加されます。 追加に失敗した場合、領域は予約されません。

通常、このメソッドは、レコードが書き込まれる前に完了する可能性があります。 レコードが確実に書き込まれるようにするには、recordAppendOptions パラメーターを使用して ForceFlush フラグを指定するか、Flush メソッドを呼び出します。

適用対象