LogRecordSequence.ReserveAndAppend Metoda
Definice
Důležité
Některé informace platí pro předběžně vydaný produkt, který se může zásadně změnit, než ho výrobce nebo autor vydá. Microsoft neposkytuje žádné záruky, výslovné ani předpokládané, týkající se zde uváděných informací.
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam.
Přetížení
| Name | Description |
|---|---|
| ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze zdědit. |
| ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze zdědit. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Automaticky vytvoří jednu rezervaci a připojí k sekvenci záznam. Tuto metodu nelze zdě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, která určuje způsob zápisu RecordAppendOptions dat.
- reservationCollection
- ReservationCollection
Kolekce rezervací, ve které se mají rezervace provádět.
- reservations
- Int64[]
Rezervace, které se mají provést, v bajtech.
Návraty
Pořadové číslo připojeného záznamu protokolu.
Implementuje
Výjimky
Jeden nebo více 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 zahrnutí nového záznamu nebo vytvořit rezervaci.
Metoda byla volána po odstranění sekvence.
Jeden nebo více argumentů jsou 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í.
Pro pokračování v provádění programu není dostatek paměti.
Operační systém odepře přístup k zadané sekvenci protokolu.
Rezervace není dostatečně velká, aby se vešla data do reservationsumístění .
Poznámky
Data obsažená v parametru data se zřetězí do jednoho bajtového pole pro připojení jako záznam. Při čtení záznamu však není provedeno žádné zřizování pro rozdělení dat zpět do segmentů 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í se tato metoda může dokončit před zápisem záznamu. Pokud chcete zajistit, aby byl záznam zapsán, zadejte ForceFlush příznak pomocí parametru recordAppendOptions nebo volejte 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 zdě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, která určuje způsob zápisu RecordAppendOptions dat.
- reservationCollection
- ReservationCollection
A ReservationCollection obsahující kolekci, ve které se mají rezervace provádět.
- 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 touto sekvencí záznamů.
Jeden nebo více argumentů jsou 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í operace.
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.
Pro pokračování v provádění programu není dostatek paměti.
Posloupnost záznamů je plná.
Operační systém odepře přístup k zadané sekvenci protokolu.
Rezervace není dostatečně velká, aby se vešla data do reservationsumístění .
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 se zřetězí do jednoho bajtového pole pro připojení jako záznam. Při čtení záznamu však není provedeno žádné zřizování pro rozdělení dat zpět do segmentů 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í se tato metoda může dokončit před zápisem záznamu. Pokud chcete zajistit, aby byl záznam zapsán, zadejte ForceFlush příznak pomocí parametru recordAppendOptions nebo volejte metodu Flush .