IRecordSequence.ReserveAndAppend Method

Definition

When overridden in a derived class, automatically makes a single reservation and appends a record to the sequence.

Overloads

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

When overridden in a derived class, automatically makes a single reservation and appends a record to the sequence.

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

When overridden in a derived class, automatically makes a single reservation and appends a record to the sequence.

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

When overridden in a derived class, automatically makes a single reservation and appends a record to the sequence.

public:
 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
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.

Exceptions

One or more of the arguments is invalid.

An I/O error occurred while appending the record.

The record sequence could not make enough free space to contain the new record, or to make the reservation.

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

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(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])

When overridden in a derived class, automatically makes a single reservation and appends a record to the sequence.

public:
 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
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.

Exceptions

One or more of the arguments is invalid.

An I/O error occurred while appending the record.

The record sequence could not make enough free space to contain the new record, or to make the reservation.

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

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