Sdílet prostřednictvím


LogRecordSequence.ReserveAndAppend Metoda

Definice

Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam.

Přetížení

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

Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit.

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

Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit.

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

Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit.

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

Seznam segmentů pole bajtů, které budou zřetězeny a připojeny jako záznam.

userRecord
SequenceNumber

Pořadové číslo dalšího záznamu v pořadí zadaném uživatelem.

previousRecord
SequenceNumber

Pořadové číslo dalšího záznamu v předchozím pořadí.

recordAppendOptions
RecordAppendOptions

Platná hodnota RecordAppendOptions , která určuje způsob zápisu dat.

reservationCollection
ReservationCollection

Kolekce rezervací, ve které se mají provádět rezervace.

reservations
Int64[]

Rezervace, které se mají provést, v bajtech.

Návraty

Pořadové číslo připojeného záznamu protokolu.

Implementuje

Výjimky

Nejméně jeden argument je neplatný.

Při připojování záznamu došlo k vstupně-výstupní chybě.

Sekvence záznamů nemohla vytvořit dostatek volného místa pro nový záznam nebo pro vytvoření rezervace.

Metoda byla volána po odstranění sekvence.

Jeden nebo více argumentů je null.

userRecord nebo previousRecord není mezi základním a posledním pořadovými čísly této sekvence.

Operaci nelze provést, protože sekvence záznamů byla otevřena s přístupem jen pro čtení.

K pokračování v provádění programu není dostatek paměti.

Operační systém odepře přístup k zadané sekvenci protokolu.

Žádnou rezervaci dostatečně velkou na to, aby se vešla data , najdete v reservations.

Poznámky

Data obsažená v parametru data budou zřetězena do pole s jedním bajtem pro připojení jako záznamu. Při čtení záznamu však není provedeno žádné ustanovení pro rozdělení dat zpět na segmenty pole.

Zadané rezervace se přidají do poskytnuté kolekce rezervací v atomické operaci s operací připojení záznamu. Pokud připojení selže, není vyhrazeno žádné místo.

Za normálních okolností může být tato metoda dokončena před zápisem záznamu. Chcete-li zajistit, aby záznam byl zapsán, zadejte ForceFlush příznak pomocí parametru recordAppendOptions , nebo zavolejte metodu Flush .

Platí pro

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

Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze dědit.

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>

Seznam segmentů pole bajtů, které budou zřetězeny a připojeny jako záznam.

nextUndoRecord
SequenceNumber

Pořadové číslo dalšího záznamu v pořadí zadaném uživatelem.

previousRecord
SequenceNumber

Pořadové číslo dalšího záznamu v předchozím pořadí.

recordAppendOptions
RecordAppendOptions

Platná hodnota RecordAppendOptions , která určuje způsob zápisu dat.

reservationCollection
ReservationCollection

A ReservationCollection obsahující kolekci, ve které se mají provádět rezervace.

reservations
Int64[]

Rezervace, které se mají provést, v bajtech.

Návraty

Pořadové číslo připojeného záznamu protokolu.

Implementuje

Výjimky

nextUndoRecord nebo previousRecord není pro tuto sekvenci platný.

-nebo-

data nelze připojit, protože je větší než maximální velikost záznamu.

-nebo-

reservations nebyla vytvořena v této sekvenci záznamů.

Jeden nebo více argumentů je null.

nextUndoRecord nebo previousRecord není mezi základním a posledním pořadovými čísly této sekvence.

Požadavek nelze provést kvůli neočekávané výjimce vstupně-výstupních operací.

-nebo-

Požadavek nelze provést kvůli chybě vstupně-výstupního zařízení.

Operaci nelze provést, protože sekvence záznamů byla otevřena s přístupem jen pro čtení.

Metoda byla volána po odstranění sekvence.

K pokračování v provádění programu není dostatek paměti.

Sekvence záznamů je plná.

Operační systém odepře přístup k zadané sekvenci protokolu.

Žádnou rezervaci dostatečně velkou na to, aby se vešla data , najdete v reservations.

Příklady

Následující příklad ukazuje, jak tuto metodu použít k vytváření rezervací. Všimněte si, že tuto úlohu lze provést pouze při použití třídy založené 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);  

Poznámky

Data obsažená v parametru data budou zřetězena do pole s jedním bajtem pro připojení jako záznamu. Při čtení záznamu však není provedeno žádné ustanovení pro rozdělení dat zpět na segmenty pole.

Zadané rezervace se přidají do poskytnuté kolekce rezervací v atomické operaci s operací připojení záznamu. Pokud připojení selže, není vyhrazeno žádné místo.

Za normálních okolností může být tato metoda dokončena před zápisem záznamu. Chcete-li zajistit, aby záznam byl zapsán, zadejte ForceFlush příznak pomocí parametru recordAppendOptions , nebo zavolejte metodu Flush .

Platí pro