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 sola reserva y anexa un registro a la secuencia.
Sobrecargas
| Nombre | Description |
|---|---|
| ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Realiza automáticamente una sola reserva 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 sola reserva 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 sola reserva 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>>
Lista de segmentos de matriz de bytes que se concatenarán y anexarán como registro.
- userRecord
- SequenceNumber
Número de secuencia del siguiente registro en el orden especificado por el usuario.
- previousRecord
- SequenceNumber
Número de secuencia del siguiente registro en orden anterior.
- recordAppendOptions
- RecordAppendOptions
Valor válido de RecordAppendOptions que especifica cómo se deben escribir los datos.
- reservationCollection
- ReservationCollection
Colección de reservas en la que se van a realizar reservas.
- reservations
- Int64[]
Las reservas que se van a realizar, en bytes.
Devoluciones
Número de secuencia del registro anexado.
Implementaciones
Excepciones
Uno o varios argumentos no son válidos.
Error de E/S al anexar el registro.
La secuencia de registros no pudo hacer suficiente espacio libre para contener el nuevo registro o para realizar la reserva.
Se llamó al método después de eliminar la secuencia.
Uno o varios de los argumentos son null.
userRecord o previousRecord no está entre la base y los últimos números de secuencia de esta secuencia.
No se puede realizar la operación porque la secuencia de registros se abrió con acceso de solo lectura.
No hay memoria suficiente para continuar con la ejecución del programa.
El sistema operativo deniega el acceso a la secuencia de registro especificada.
No se puede encontrar ninguna reserva lo suficientemente grande como para caber data en reservations.
Comentarios
Los datos contenidos en el data parámetro se concatenan en una sola matriz de bytes para anexarse como registro. Sin embargo, no se realiza ninguna disposición para dividir los datos en segmentos de 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 anexión de registros. Si se produce un error en la anexión, 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 ForceFlush marca mediante el recordAppendOptions parámetro o llame al Flush método .
Se aplica a
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Realiza automáticamente una sola reserva 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>
Lista de segmentos de matriz de bytes que se concatenarán y anexarán como registro.
- nextUndoRecord
- SequenceNumber
Número de secuencia del siguiente registro en el orden especificado por el usuario.
- previousRecord
- SequenceNumber
Número de secuencia del siguiente registro en orden anterior.
- recordAppendOptions
- RecordAppendOptions
Valor válido de RecordAppendOptions que especifica cómo se deben escribir los datos.
- reservationCollection
- ReservationCollection
que ReservationCollection contiene la colección en la que se van a realizar reservas.
- reservations
- Int64[]
Las reservas que se van a realizar, en bytes.
Devoluciones
Número de secuencia del registro anexado.
Implementaciones
Excepciones
nextUndoRecord o previousRecord no es válido para esta secuencia.
O bien
data no se puede anexar porque es mayor que el tamaño máximo del registro.
O bien
reservations esta secuencia de registros no la creó.
Uno o varios de los argumentos son null.
nextUndoRecord o previousRecord no está entre la base y los últimos números de secuencia de esta secuencia.
No se pudo realizar la solicitud debido a una excepción de E/S inesperada.
O bien
No se pudo realizar la solicitud debido a un error de dispositivo de E/S.
No se puede realizar la operación porque la secuencia de registros se abrió con acceso de solo lectura.
Se llamó al método después de eliminar la secuencia.
No hay memoria suficiente para continuar con la ejecución del programa.
La secuencia de registros está llena.
El sistema operativo deniega el acceso a la secuencia de registro especificada.
No se puede encontrar ninguna reserva lo suficientemente grande como para caber data en reservations.
Ejemplos
En el ejemplo siguiente se muestra cómo usar este método para realizar reservas. Tenga en cuenta que esta tarea solo se puede realizar cuando se usa la clase basada en LogRecordSequence 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 data parámetro se concatenan en una sola matriz de bytes para anexarse como registro. Sin embargo, no se realiza ninguna disposición para dividir los datos en segmentos de 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 anexión de registros. Si se produce un error en la anexión, 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 ForceFlush marca mediante el recordAppendOptions parámetro o llame al Flush método .