LogRecordSequence.ReserveAndAppend Metodo

Definizione

Crea automaticamente una sola prenotazione e accoda un record alla sequenza.Automatically makes a single reservation and appends a record to the sequence.

Overload

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

Crea automaticamente una sola prenotazione e accoda un record alla sequenza.Automatically makes a single reservation and appends a record to the sequence. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Crea automaticamente una sola prenotazione e accoda un record alla sequenza.Automatically makes a single reservation and appends a record to the sequence. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Crea automaticamente una sola prenotazione e accoda un record alla sequenza.Automatically makes a single reservation and appends a record to the sequence. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Parametri

data
IList<ArraySegment<Byte>>

Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.A list of byte array segments that will be concatenated and appended as the record.

userRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine specificato dall'utente.The sequence number of the next record in the user-specified order.

previousRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine Precedente.The sequence number of the next record in Previous order.

recordAppendOptions
RecordAppendOptions

Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.A valid value of RecordAppendOptions that specifies how the data should be written.

reservationCollection
ReservationCollection

raccolta di prenotazioni nella quale fare prenotazioni.The reservation collection to make reservations in.

reservations
Int64[]

Prenotazioni da fare, in byte.The reservations to make, in bytes.

Restituisce

Numero di sequenza del record di registro accodato.The sequence number of the appended log record.

Implementazioni

Eccezioni

Uno o più argomenti non sono validi.One or more of the arguments is invalid.

Si è verificato un errore di I/O durante l'accodamento del record.An I/O error occurred while appending the record.

La sequenza di record non ha potuto fare abbastanza spazio per contenere il nuovo record, o fare la prenotazione.The record sequence could not make enough free space to contain the new record, or to make the reservation.

Il metodo è stato chiamato dopo l'eliminazione sequenza.The method was called after the sequence has been disposed of.

Uno o più argomenti sono null.One or more of the arguments are null.

userRecord o previousRecord non è compreso tra i numeri di sequenza di base e finale di questa sequenza.userRecord or previousRecord is not between the base and last sequence numbers of this sequence.

L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.The operation cannot be performed because the record sequence was opened with read-only access.

Memoria insufficiente per continuare l'esecuzione del programma.There is not enough memory to continue the execution of the program.

L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.Access for the specified log sequence is denied by the operating system.

Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data in reservations.No reservation large enough to fit data can be found in reservations.

Commenti

I dati contenuti nel parametro data verranno concatenati in una matrice a byte singolo per essere quindi accodati come record.Data contained in the data parameter will be concatenated into a single byte array for appending as the record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.However, no provision is made for splitting data back into array segments when the record is read.

Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita mediante un'operazione atomica con un'operazione di accodamento record.The specified reservations are added to the provided reservation collection in an atomic operation with a record append operation. Se l'accodamento non riesce, non verrà riservato alcuno spazio.If the append fails, no space is reserved.

In genere questo metodo può essere completato prima che il record sia stato scritto.Normally, this method may complete before the record has been written. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions oppure chiamare il metodo Flush.To ensure that a record has been written, either specify the ForceFlush flag using the recordAppendOptions parameter, or call the Flush method.

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

Crea automaticamente una sola prenotazione e accoda un record alla sequenza.Automatically makes a single reservation and appends a record to the sequence. Questo metodo non può essere ereditato.This method cannot be inherited.

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

Parametri

data
ArraySegment<Byte>

Elenco di segmenti della matrice di byte che verranno concatenati e accodati come record.A list of byte array segments that will be concatenated and appended as the record.

nextUndoRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine specificato dall'utente.The sequence number of the next record in the user-specified order.

previousRecord
SequenceNumber

Numero di sequenza del record successivo nell'ordine Precedente.The sequence number of the next record in Previous order.

recordAppendOptions
RecordAppendOptions

Valore valido di RecordAppendOptions che specifica la modalità da utilizzare per la scrittura dei dati.A valid value of RecordAppendOptions that specifies how the data should be written.

reservationCollection
ReservationCollection

Classe ReservationCollection che contiene la raccolta in cui effettuare prenotazioni.A ReservationCollection that contains the collection to make reservations in.

reservations
Int64[]

Prenotazioni da fare, in byte.The reservations to make, in bytes.

Restituisce

Numero di sequenza del record di registro accodato.The sequence number of the appended log record.

Implementazioni

Eccezioni

nextUndoRecord o previousRecord non è valido per questa sequenza.nextUndoRecord or previousRecord is not valid for this sequence.

-oppure--or- Non è possibile aggiungere data perché le dimensioni superano le dimensioni massime dei record.data cannot be appended because it is larger than the maximum record size.

-oppure--or- reservations non è stato creato da questa sequenza di record.reservations was not created by this record sequence.

Uno o più argomenti sono null.One or more of the arguments are null.

nextUndoRecord o previousRecord non è compreso tra i numeri di sequenza di base e finale di questa sequenza.nextUndoRecord or previousRecord is not between the base and last sequence numbers of this sequence.

Impossibile eseguire la richiesta a causa di un'eccezione I/O imprevista.The request could not be performed because of an unexpected I/O exception.

-oppure--or-

Impossibile eseguire la richiesta a causa di un errore del dispositivo di I/O.The request could not be performed because of an I/O device error.

L'operazione non può essere eseguita perché la sequenza di record è stata aperta con accesso in sola lettura.The operation cannot be performed because the record sequence was opened with read-only access.

Il metodo è stato chiamato dopo l'eliminazione sequenza.The method was called after the sequence has been disposed of.

Memoria insufficiente per continuare l'esecuzione del programma.There is not enough memory to continue the execution of the program.

Sequenza di record piena.The record sequence is full.

L'accesso per la sequenza dei log specificata viene negato dal sistema operativo.Access for the specified log sequence is denied by the operating system.

Impossibile trovare una prenotazione abbastanza grande da soddisfare il parametro data in reservations.No reservation large enough to fit data can be found in reservations.

Esempi

Nell'esempio seguente viene illustrato come utilizzare tale metodo per creare prenotazioni.The following example shows how to use this method to make reservations. Questa attività può essere eseguita solo se si usa la classe LogRecordSequence basata su CLFS.Notice that this task can only be performed when using the CLFS-based LogRecordSequence class.

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.Data contained in the data parameter will be concatenated into a single byte array for appending as the record. Tuttavia, non esiste alcun provisioning per suddividere dati in segmenti della matrice una volta letto il record.However, no provision is made for splitting data back into array segments when the record is read.

Le prenotazioni specificate vengono aggiunte alla raccolta di prenotazioni fornita mediante un'operazione atomica con un'operazione di accodamento record.The specified reservations are added to the provided reservation collection in an atomic operation with a record append operation. Se l'accodamento non riesce, non verrà riservato alcuno spazio.If the append fails, no space is reserved.

In genere questo metodo può essere completato prima che il record sia stato scritto.Normally, this method may complete before the record has been written. Per garantire che un record è stato scritto, specificare il flag ForceFlush utilizzando il parametro recordAppendOptions oppure chiamare il metodo Flush.To ensure that a record has been written, either specify the ForceFlush flag using the recordAppendOptions parameter, or call the Flush method.

Si applica a