LogRecordSequence.ReserveAndAppend Metodo
Definizione
Importante
Alcune informazioni sono relative alla release non definitiva del prodotto, che potrebbe subire modifiche significative prima della release definitiva. Microsoft non riconosce alcuna garanzia, espressa o implicita, in merito alle informazioni qui fornite.
Crea automaticamente una sola prenotazione e accoda un record alla sequenza.
Overload
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Crea automaticamente una sola prenotazione e accoda un record alla sequenza. Questo metodo non può essere ereditato. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Crea automaticamente una sola prenotazione e accoda un record alla sequenza. Questo metodo non può essere ereditato. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Crea automaticamente una sola prenotazione e accoda 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 della 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 RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
- reservationCollection
- ReservationCollection
raccolta di prenotazioni nella quale fare prenotazioni.
- reservations
- Int64[]
Prenotazioni da fare, in byte.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
Uno o più argomenti non sono validi.
Si è verificato un errore di I/O durante l'accodamento del record.
La sequenza di record non ha potuto fare abbastanza spazio per contenere il nuovo record, o fare la prenotazione.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Uno o più argomenti sono null
.
userRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Memoria insufficiente per continuare l'esecuzione del programma.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data
in reservations
.
Commenti
I dati contenuti nel parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita mediante un'operazione atomica con un'operazione di accodamento record. Se l'accodamento non riesce, non verrà riservato alcuno spazio.
In genere questo metodo può essere completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.
Si applica a
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Crea automaticamente una sola prenotazione e accoda 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 della 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 RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.
- reservationCollection
- ReservationCollection
Classe ReservationCollection che contiene la raccolta in cui effettuare prenotazioni.
- reservations
- Int64[]
Prenotazioni da fare, in byte.
Restituisce
Numero di sequenza del record di registro accodato.
Implementazioni
Eccezioni
nextUndoRecord
o previousRecord
non è valido per questa sequenza.
-oppure-
Non è possibile aggiungere data
perché le dimensioni superano le dimensioni massime dei record.
-oppure-
reservations
non è stato creato da questa sequenza di record.
Uno o più argomenti sono null
.
nextUndoRecord
o previousRecord
non è compreso tra i numeri di sequenza di base e finale di questa sequenza.
Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.
-oppure-
Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.
L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.
Il metodo è stato chiamato dopo l'eliminazione sequenza.
Memoria insufficiente per continuare l'esecuzione del programma.
Sequenza di record piena.
L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.
Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data
in reservations
.
Esempio
Nell'esempio seguente viene illustrato come utilizzare tale metodo per creare prenotazioni. Questa attività può essere eseguita solo se si usa la classe LogRecordSequence basata su 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 parametro data
verranno concatenati in una matrice a byte singolo per essere quindi accodati come record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.
Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita mediante un'operazione atomica con un'operazione di accodamento record. Se l'accodamento non riesce, non verrà riservato alcuno spazio.
In genere questo metodo può essere completato prima che il record sia stato scritto. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions
oppure chiamare il metodo Flush.