LogRecordSequence.ReserveAndAppend Metodo

Definizione

Crea automaticamente una singola prenotazione e aggiunge un record alla sequenza.

Overload

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

Crea automaticamente una singola prenotazione e aggiunge un record alla sequenza. Questo metodo non può essere ereditato.

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

Crea automaticamente una singola prenotazione e aggiunge un record alla sequenza. Questo metodo non può essere ereditato.

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

Crea automaticamente una singola prenotazione e aggiunge un record alla sequenza. Questo metodo non può essere ereditato.

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

Parametri

data
IList<ArraySegment<Byte>>

Elenco di segmenti di matrice di byte che verranno concatenati e accodati come record.

userRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine specificato dall'utente.

previousRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine precedente.

recordAppendOptions
RecordAppendOptions

Valore valido di che specifica la modalità di RecordAppendOptions scrittura dei dati.

reservationCollection
ReservationCollection

Raccolta di prenotazioni in cui effettuare prenotazioni.

reservations
Int64[]

Prenotazioni da effettuare, in byte.

Valori restituiti

Numero di sequenza del record di log accodato.

Implementazioni

Eccezioni

Uno o più argomenti non sono validi.

Errore di I/O durante l'aggiunta del record.

La sequenza di record non è riuscita a liberare spazio sufficiente per contenere il nuovo record o per effettuare la prenotazione.

Il metodo è stato chiamato dopo che la sequenza è stata eliminata.

Uno o più argomenti sono null.

userRecord o previousRecord non è compreso tra il numero di base e l'ultimo numero di sequenza di questa sequenza.

Impossibile eseguire l'operazione perché la sequenza di record è stata aperta con accesso di sola lettura.

Memoria insufficiente per continuare l'esecuzione del programma.

L'accesso per la sequenza di log specificata viene negato dal sistema operativo.

Nessuna prenotazione abbastanza grande da adattarsi data è disponibile in reservations.

Commenti

I dati contenuti nel data parametro verranno concatenati in una singola matrice di byte per l'aggiunta come record. Tuttavia, non viene effettuato alcun provisioning per la suddivisione dei dati in segmenti di matrice quando il record viene letto.

Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita in un'operazione atomica con un'operazione di accodamento di record. Se l'accodamento non riesce, non viene riservato alcuno spazio.

In genere, questo metodo può essere completato prima della scrittura del record. Per assicurarsi che sia stato scritto un record, specificare il ForceFlush flag usando il recordAppendOptions parametro o chiamare il Flush metodo .

Si applica a

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

Crea automaticamente una singola prenotazione e aggiunge un record alla sequenza. Questo metodo non può essere ereditato.

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

Parametri

data
ArraySegment<Byte>

Elenco di segmenti di matrice di byte che verranno concatenati e accodati come record.

nextUndoRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine specificato dall'utente.

previousRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine precedente.

recordAppendOptions
RecordAppendOptions

Valore valido di che specifica la modalità di RecordAppendOptions scrittura dei dati.

reservationCollection
ReservationCollection

Oggetto ReservationCollection contenente la raccolta in cui effettuare prenotazioni.

reservations
Int64[]

Prenotazioni da effettuare, in byte.

Valori restituiti

Numero di sequenza del record di log accodato.

Implementazioni

Eccezioni

nextUndoRecord o previousRecord non è valido per questa sequenza.

oppure

data non può essere aggiunto perché è maggiore della dimensione massima del record.

oppure

reservations non è stato creato da questa sequenza di record.

Uno o più argomenti sono null.

nextUndoRecord o previousRecord non è compreso tra il numero di base e l'ultimo numero di sequenza di questa sequenza.

Impossibile eseguire la richiesta a causa di un'eccezione di I/O imprevista.

oppure

Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.

Impossibile eseguire l'operazione perché la sequenza di record è stata aperta con accesso di sola lettura.

Il metodo è stato chiamato dopo che la sequenza è stata eliminata.

Memoria insufficiente per continuare l'esecuzione del programma.

La sequenza di record è piena.

L'accesso per la sequenza di log specificata viene negato dal sistema operativo.

Nessuna prenotazione abbastanza grande da adattarsi data è disponibile in reservations.

Esempio

Nell'esempio seguente viene illustrato come utilizzare questo metodo per effettuare prenotazioni. Si noti che questa attività può essere eseguita solo quando si usa la classe basata su 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);

Commenti

I dati contenuti nel data parametro verranno concatenati in una singola matrice di byte per l'aggiunta come record. Tuttavia, non viene effettuato alcun provisioning per la suddivisione dei dati in segmenti di matrice quando il record viene letto.

Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita in un'operazione atomica con un'operazione di accodamento di record. Se l'accodamento non riesce, non viene riservato alcuno spazio.

In genere, questo metodo può essere completato prima della scrittura del record. Per assicurarsi che sia stato scritto un record, specificare il ForceFlush flag usando il recordAppendOptions parametro o chiamare il Flush metodo .

Si applica a