FileRecordSequence.ReserveAndAppend Method

Definition

Automatically makes a single reservation and appends a record to the sequence.

Overloads

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

Automatically makes a single reservation and appends a record to the sequence. This method cannot be inherited.

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

Automatically makes a single reservation and appends a record to the sequence. This method cannot be inherited.

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

Automatically makes a single reservation and appends a record to the sequence. This method cannot be inherited.

public:
 virtual System::IO::Log::SequenceNumber ReserveAndAppend(System::Collections::Generic::IList<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 (System.Collections.Generic.IList<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 : 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)), nextUndoRecord As SequenceNumber, previousRecord As SequenceNumber, recordAppendOptions As RecordAppendOptions, reservationCollection As ReservationCollection, ParamArray reservations As Long()) As SequenceNumber

Parameters

data
IList<ArraySegment<Byte>>

A list of byte array segments that will be concatenated and appended as the record.

nextUndoRecord
SequenceNumber

The sequence number of the next record in the user-specified order.

previousRecord
SequenceNumber

The sequence number of the next record in Previous order.

recordAppendOptions
RecordAppendOptions

A valid value of RecordAppendOptions that specifies how the data should be written.

reservationCollection
ReservationCollection

The reservation collection to make reservations in.

reservations
Int64[]

The reservations to make, in bytes.

Returns

The sequence number of the appended log record.

Implements

Exceptions

One or more of the arguments are null.

One or more of the arguments are out of range.

reservations was not created by this record sequence.

The operation cannot be performed because the record sequence was opened with read-only access.

The request could not be performed because of an unexpected I/O exception.

The method was called after the sequence has been disposed of.

There is not enough memory to continue the execution of the program.

The record sequence is full.

Remarks

Data contained in the data parameter will be concatenated into a single byte array for appending as the record. However, no provision is made for splitting data back into array segments when the record is read.

The specified reservations are added to the provided reservation collection in an atomic operation with a record append operation. If the append fails, no space is reserved.

Normally, this method may complete before the record has been written. To ensure that a record has been written, either specify the ForceFlush flag using the recordAppendOptions parameter, or call the Flush method.

Applies to

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

Automatically makes a single reservation and appends a record to the sequence. This method cannot be inherited.

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

Parameters

data
ArraySegment<Byte>

A list of byte array segments that will be concatenated and appended as the record.

nextUndoRecord
SequenceNumber

The sequence number of the next record in the user-specified order.

previousRecord
SequenceNumber

The sequence number of the next record in Previous order.

recordAppendOptions
RecordAppendOptions

A valid value of RecordAppendOptions that specifies how the data should be written.

reservationCollection
ReservationCollection

A ReservationCollection that contains the collection to make reservations in.

reservations
Int64[]

The reservations to make, in bytes.

Returns

The sequence number of the appended log record.

Implements

Exceptions

One or more of the arguments are null.

One or more of the arguments are out of range.

reservations was not created by this record sequence.

The operation cannot be performed because the record sequence was opened with read-only access.

The request could not be performed because of an unexpected I/O exception.

The method was called after the sequence has been disposed of.

There is not enough memory to continue the execution of the program.

The record sequence is full.

Remarks

Data contained in the data parameter will be concatenated into a single byte array for appending as the record. However, no provision is made for splitting data back into array segments when the record is read.

The specified reservations are added to the provided reservation collection in an atomic operation with a record append operation. If the append fails, no space is reserved.

Normally, this method may complete before the record has been written. To ensure that a record has been written, either specify the ForceFlush flag using the recordAppendOptions parameter, or call the Flush method.

Applies to