Udostępnij za pośrednictwem


LogRecordSequence.ReserveAndAppend Metoda

Definicja

Automatycznie tworzy pojedynczą rezerwację i dołącza rekord do sekwencji.

Przeciążenia

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

Automatycznie tworzy pojedynczą rezerwację i dołącza rekord do sekwencji. Tej metody nie można dziedziczyć.

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

Automatycznie tworzy pojedynczą rezerwację i dołącza rekord do sekwencji. Tej metody nie można dziedziczyć.

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

Automatycznie tworzy pojedynczą rezerwację i dołącza rekord do sekwencji. Tej metody nie można dziedziczyć.

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

Parametry

data
IList<ArraySegment<Byte>>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

userRecord
SequenceNumber

Numer sekwencji następnego rekordu w określonej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określa sposób zapisywania RecordAppendOptions danych.

reservationCollection
ReservationCollection

Kolekcja rezerwacji do dokonywania rezerwacji.

reservations
Int64[]

Rezerwacje do wykonania w bajtach.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

Co najmniej jeden argument jest nieprawidłowy.

Wystąpił błąd we/wy podczas dołączania rekordu.

Sekwencja rekordów nie może zwolnić miejsca, aby zawierać nowy rekord lub dokonać rezerwacji.

Metoda została wywołana po usunięciu sekwencji.

Co najmniej jeden z argumentów to null.

userRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Za mało pamięci, aby kontynuować wykonywanie programu.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić data się w pliku reservations.

Uwagi

Dane zawarte w parametrze data zostaną łączone w jedną tablicę bajtów na potrzeby dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Określone rezerwacje są dodawane do udostępnionej kolekcji rezerwacji w operacji niepodzielnej z operacją dołączania rekordów. Jeśli dołączanie zakończy się niepowodzeniem, żadne miejsce nie jest zarezerwowane.

Zwykle ta metoda może zakończyć się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy

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

Automatycznie tworzy pojedynczą rezerwację i dołącza rekord do sekwencji. Tej metody nie można dziedziczyć.

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

Parametry

data
ArraySegment<Byte>

Lista segmentów tablic bajtowych, które będą łączone i dołączane jako rekord.

nextUndoRecord
SequenceNumber

Numer sekwencji następnego rekordu w określonej przez użytkownika kolejności.

previousRecord
SequenceNumber

Numer sekwencji następnego rekordu w poprzedniej kolejności.

recordAppendOptions
RecordAppendOptions

Prawidłowa wartość określa sposób zapisywania RecordAppendOptions danych.

reservationCollection
ReservationCollection

Obiekt ReservationCollection zawierający kolekcję do dokonywania rezerwacji.

reservations
Int64[]

Rezerwacje do wykonania w bajtach.

Zwraca

Numer sekwencji dołączonego rekordu dziennika.

Implementuje

Wyjątki

nextUndoRecord lub previousRecord jest nieprawidłowy dla tej sekwencji.

-lub-

data Nie można dołączyć, ponieważ jest większy niż maksymalny rozmiar rekordu.

-lub-

reservations nie został utworzony przez tę sekwencję rekordów.

Co najmniej jeden z argumentów to null.

nextUndoRecord lub previousRecord nie znajduje się między numerami podstawowymi i ostatnimi sekwencjami tej sekwencji.

Nie można wykonać żądania z powodu nieoczekiwanego wyjątku we/wy.

-lub-

Nie można wykonać żądania z powodu błędu urządzenia we/wy.

Nie można wykonać operacji, ponieważ sekwencja rekordów została otwarta z dostępem tylko do odczytu.

Metoda została wywołana po usunięciu sekwencji.

Za mało pamięci, aby kontynuować wykonywanie programu.

Sekwencja rekordów jest pełna.

Dostęp do określonej sekwencji dzienników jest odrzucany przez system operacyjny.

Nie można znaleźć rezerwacji wystarczająco dużej, aby zmieścić data się w pliku reservations.

Przykłady

W poniższym przykładzie pokazano, jak używać tej metody do dokonywania rezerwacji. Zwróć uwagę, że to zadanie można wykonać tylko w przypadku korzystania z klasy opartej na 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);  

Uwagi

Dane zawarte w parametrze data zostaną łączone w jedną tablicę bajtów na potrzeby dołączania jako rekordu. Jednak podczas odczytywania rekordu nie jest wprowadzana żadna aprowizacja dzielenia danych z powrotem na segmenty tablic.

Określone rezerwacje są dodawane do udostępnionej kolekcji rezerwacji w operacji niepodzielnej z operacją dołączania rekordów. Jeśli dołączanie zakończy się niepowodzeniem, żadne miejsce nie jest zarezerwowane.

Zwykle ta metoda może zakończyć się przed zapisaniem rekordu. Aby upewnić się, że rekord został zapisany, określ flagę ForceFlush przy użyciu parametru recordAppendOptions lub wywołaj metodę Flush .

Dotyczy