LogRecordSequence.ReserveAndAppend Método

Definição

Faz automaticamente uma única reserva e acrescenta um registo à sequência.

Sobrecargas

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

Faz automaticamente uma única reserva e acrescenta um registo à sequência. Este método não pode ser herdado.

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

Faz automaticamente uma única reserva e acrescenta um registo à sequência. Este método não pode ser herdado.

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

Faz automaticamente uma única reserva e acrescenta um registo à sequência. Este método não pode ser herdado.

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>>

Uma lista de segmentos de array de bytes que serão concatenados e adicionados como registo.

userRecord
SequenceNumber

O número de sequência do registo seguinte na ordem especificada pelo utilizador.

previousRecord
SequenceNumber

O número de sequência do próximo registo na ordem Anterior.

recordAppendOptions
RecordAppendOptions

Um valor válido de RecordAppendOptions isso especifica como os dados devem ser escritos.

reservationCollection
ReservationCollection

A recolha de reservas para fazer reservas em.

reservations
Int64[]

As reservas a fazer, em bytes.

Devoluções

O número de sequência do registo de registo anexado.

Implementações

Exceções

Um ou mais dos argumentos são inválidos.

Ocorreu um erro de I/O durante a anexação do registo.

A sequência de registos não conseguiu abrir espaço livre suficiente para conter o novo registo, nem para fazer a reserva.

O método era chamado depois de a sequência ter sido eliminada.

Um ou mais dos argumentos são null.

userRecord ou previousRecord não está entre os números base e último desta sequência.

A operação não pode ser realizada porque a sequência de registos foi aberta com acesso apenas de leitura.

Não há memória suficiente para continuar a execução do programa.

O acesso para a sequência de registo especificada é negado pelo sistema operativo.

Não se encontra nenhuma reserva suficientemente grande para caber data em reservations.

Observações

Os dados contidos no data parâmetro serão concatenados num array de um único byte para serem adicionados como registo. No entanto, não é prevista a divisão dos dados em segmentos de array quando o registo é lido.

As reservas especificadas são adicionadas à coleção de reservas fornecida numa operação atómica com uma operação de anexação de registos. Se o anexo falhar, não há espaço reservado.

Normalmente, este método pode concluir-se antes de o registo ter sido escrito. Para garantir que um registo foi escrito, especifique o ForceFlush flag usando o recordAppendOptions parâmetro ou chame o Flush método.

Aplica-se a

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

Faz automaticamente uma única reserva e acrescenta um registo à sequência. Este método não pode ser herdado.

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>

Uma lista de segmentos de array de bytes que serão concatenados e adicionados como registo.

nextUndoRecord
SequenceNumber

O número de sequência do registo seguinte na ordem especificada pelo utilizador.

previousRecord
SequenceNumber

O número de sequência do próximo registo na ordem Anterior.

recordAppendOptions
RecordAppendOptions

Um valor válido de RecordAppendOptions isso especifica como os dados devem ser escritos.

reservationCollection
ReservationCollection

A ReservationCollection que contém a coleção para fazer reservas.

reservations
Int64[]

As reservas a fazer, em bytes.

Devoluções

O número de sequência do registo de registo anexado.

Implementações

Exceções

nextUndoRecord ou previousRecord não é válida para esta sequência.

-ou-

data não pode ser acrescentado porque é maior do que o tamanho máximo do registo.

-ou-

reservations não foi criado por esta sequência de registos.

Um ou mais dos argumentos são null.

nextUndoRecord ou previousRecord não está entre os números base e último desta sequência.

O pedido não pôde ser realizado devido a uma exceção inesperada de I/O.

-ou-

O pedido não pôde ser realizado devido a um erro no dispositivo de E/S.

A operação não pode ser realizada porque a sequência de registos foi aberta com acesso apenas de leitura.

O método era chamado depois de a sequência ter sido eliminada.

Não há memória suficiente para continuar a execução do programa.

A sequência de discos está cheia.

O acesso para a sequência de registo especificada é negado pelo sistema operativo.

Não se encontra nenhuma reserva suficientemente grande para caber data em reservations.

Exemplos

O exemplo seguinte mostra como usar este método para fazer reservas. Note que esta tarefa só pode ser realizada quando se utiliza a classe baseada LogRecordSequence em 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);

Observações

Os dados contidos no data parâmetro serão concatenados num array de um único byte para serem adicionados como registo. No entanto, não é prevista a divisão dos dados em segmentos de array quando o registo é lido.

As reservas especificadas são adicionadas à coleção de reservas fornecida numa operação atómica com uma operação de anexação de registos. Se o anexo falhar, não há espaço reservado.

Normalmente, este método pode concluir-se antes de o registo ter sido escrito. Para garantir que um registo foi escrito, especifique o ForceFlush flag usando o recordAppendOptions parâmetro ou chame o Flush método.

Aplica-se a