LogRecordSequence.ReserveAndAppend Método
Definición
Importante
Parte de la información hace referencia a la versión preliminar del producto, que puede haberse modificado sustancialmente antes de lanzar la versión definitiva. Microsoft no otorga ninguna garantía, explícita o implícita, con respecto a la información proporcionada aquí.
Realiza automáticamente una reserva única y anexa un registro a la secuencia.
Sobrecargas
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar.
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
Parámetros
- data
- IList<ArraySegment<Byte>>
Una lista de segmentos de la matriz de bytes que se concatenarán y anexarán como el registro.
- userRecord
- SequenceNumber
El número de secuencia del registro siguiente en el orden especificado por el usuario.
- previousRecord
- SequenceNumber
El número de secuencia del registro siguiente en orden anterior.
- recordAppendOptions
- RecordAppendOptions
Un valor válido de RecordAppendOptions que especifica cómo se deberían escribir los datos.
- reservationCollection
- ReservationCollection
La colección de reservas en la que realizar las reservas.
- reservations
- Int64[]
Las reservas que se han de realizar, en bytes.
Devoluciones
Número de secuencia del registro de entrada anexado.
Implementaciones
Excepciones
Uno o varios argumentos no son válidos.
Ha ocurrido un error de E/S al anexar un registro.
La secuencia del registro no pudo liberar espacio suficiente para contener el nuevo registro o para hacer la reserva.
Se llamó al método una vez eliminada la secuencia.
Uno o varios argumentos tienen el valor null
.
El valor de userRecord
o de previousRecord
no está entre los números de secuencia base y último de esta secuencia.
La operación no se puede realizar porque la secuencia del registro se abrió con acceso de solo lectura.
No hay bastante memoria para continuar la ejecución del programa.
El sistema operativo ha denegado el acceso a la secuencia de registro especificado.
No se puede encontrar en data
ninguna reserva lo suficientemente grande para ajustar reservations
.
Comentarios
Los datos contenidos en el parámetro data
se concatenarán en una matriz de bytes única para anexarlos como el registro. Sin embargo, no se ha realizado ninguna disposición para dividir los datode nuevo en los segmentos de la matriz cuando se lee el registro.
Las reservas especificadas se agregan a la colección de reservas proporcionada en una operación atómica con una operación de anexado de registro. Si no se produce el anexado, no se reserva ningún espacio.
Normalmente, este método puede completarse antes de que se haya escrito el registro. Para asegurarse de que se ha escrito un registro, especifique la marca ForceFlush utilizando el parámetro recordAppendOptions
o llame al método Flush.
Se aplica a
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Realiza automáticamente una reserva única y anexa un registro a la secuencia. Este método no se puede heredar.
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
Parámetros
- data
- ArraySegment<Byte>
Una lista de segmentos de la matriz de bytes que se concatenarán y anexarán como el registro.
- nextUndoRecord
- SequenceNumber
El número de secuencia del registro siguiente en el orden especificado por el usuario.
- previousRecord
- SequenceNumber
El número de secuencia del registro siguiente en orden anterior.
- recordAppendOptions
- RecordAppendOptions
Un valor válido de RecordAppendOptions que especifica cómo se deberían escribir los datos.
- reservationCollection
- ReservationCollection
ReservationCollection en el que se contiene la colección para realizar las reservas.
- reservations
- Int64[]
Las reservas que se han de realizar, en bytes.
Devoluciones
Número de secuencia del registro de entrada anexado.
Implementaciones
Excepciones
nextUndoRecord
o previousRecord
no es válido para esta secuencia.
o bien
No se pueden anexar data
porque es mayor que el tamaño de registro máximo.
o bien
Esta secuencia del registro no creó reservations
.
Uno o varios argumentos tienen el valor null
.
El valor de nextUndoRecord
o de previousRecord
no está entre los números de secuencia base y último de esta secuencia.
La solicitud no se pudo realizar debido a una excepción de E/S inesperada.
o bien
La solicitud no se pudo realizar debido a un error de dispositivo de E/S.
La operación no se puede realizar porque la secuencia del registro se abrió con acceso de solo lectura.
Se llamó al método una vez eliminada la secuencia.
No hay bastante memoria para continuar la ejecución del programa.
La secuencia del registro está completa.
El sistema operativo ha denegado el acceso a la secuencia de registro especificado.
No se puede encontrar en data
ninguna reserva lo suficientemente grande para ajustar reservations
.
Ejemplos
En el ejemplo siguiente se muestra cómo utilizar este método para realizar reservas. Observe que esta tarea sólo se puede realizar al utilizar la clase LogRecordSequence basada en CLFS.
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);
Comentarios
Los datos contenidos en el parámetro data
se concatenarán en una matriz de bytes única para anexarlos como el registro. Sin embargo, no se ha realizado ninguna disposición para dividir los datode nuevo en los segmentos de la matriz cuando se lee el registro.
Las reservas especificadas se agregan a la colección de reservas proporcionada en una operación atómica con una operación de anexado de registro. Si no se produce el anexado, no se reserva ningún espacio.
Normalmente, este método puede completarse antes de que se haya escrito el registro. Para asegurarse de que se ha escrito un registro, especifique la marca ForceFlush utilizando el parámetro recordAppendOptions
o llame al método Flush.