LogRecordSequence.ReserveAndAppend Metod

Definition

Gör automatiskt en enskild reservation och lägger till en post i sekvensen.

Överlagringar

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

Gör automatiskt en enskild reservation och lägger till en post i sekvensen. Den här metoden kan inte ärvas.

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

Gör automatiskt en enskild reservation och lägger till en post i sekvensen. Den här metoden kan inte ärvas.

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

Gör automatiskt en enskild reservation och lägger till en post i sekvensen. Den här metoden kan inte ärvas.

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

Parametrar

data
IList<ArraySegment<Byte>>

En lista över bytematrissegment som sammanfogas och läggs till som post.

userRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

reservationCollection
ReservationCollection

Reservationssamlingen som du vill göra reservationer i.

reservations
Int64[]

De reservationer som ska göras i byte.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

Ett eller flera av argumenten är ogiltiga.

Ett I/O-fel uppstod när posten skulle sparas.

Postsekvensen kunde inte ge tillräckligt med ledigt utrymme för att innehålla den nya posten eller för att göra reservationen.

Metoden anropades efter att sekvensen har tagits bort.

Ett eller flera av argumenten är null.

userRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Det finns ingen reservation som är tillräckligt stor för att passa data i reservations.

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

De angivna reservationerna läggs till i den angivna reservationssamlingen i en atomisk åtgärd med en post-tilläggsåtgärd. Om tillägget misslyckas är inget utrymme reserverat.

Normalt kan den här metoden slutföras innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för

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

Gör automatiskt en enskild reservation och lägger till en post i sekvensen. Den här metoden kan inte ärvas.

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

Parametrar

data
ArraySegment<Byte>

En lista över bytematrissegment som sammanfogas och läggs till som post.

nextUndoRecord
SequenceNumber

Sekvensnumret för nästa post i den användardefinierade ordningen.

previousRecord
SequenceNumber

Sekvensnumret för nästa post i Föregående ordning.

recordAppendOptions
RecordAppendOptions

Ett giltigt värde RecordAppendOptions för detta anger hur data ska skrivas.

reservationCollection
ReservationCollection

En ReservationCollection som innehåller samlingen som du vill göra reservationer i.

reservations
Int64[]

De reservationer som ska göras i byte.

Returer

Sekvensnumret för den bifogade loggposten.

Implementeringar

Undantag

nextUndoRecord eller previousRecord är inte giltig för den här sekvensen.

-eller-

data kan inte läggas till eftersom den är större än den maximala poststorleken.

-eller-

reservations skapades inte av den här postsekvensen.

Ett eller flera av argumenten är null.

nextUndoRecord eller previousRecord är inte mellan bas- och sista sekvensnumren i den här sekvensen.

Det gick inte att utföra begäran på grund av ett oväntat I/O-undantag.

-eller-

Det gick inte att utföra begäran på grund av ett I/O-enhetsfel.

Det går inte att utföra åtgärden eftersom postsekvensen öppnades med skrivskyddad åtkomst.

Metoden anropades efter att sekvensen har tagits bort.

Det finns inte tillräckligt med minne för att fortsätta körningen av programmet.

Postsekvensen är full.

Åtkomst för den angivna loggsekvensen nekas av operativsystemet.

Det finns ingen reservation som är tillräckligt stor för att passa data i reservations.

Exempel

I följande exempel visas hur du använder den här metoden för att göra reservationer. Observera att den här uppgiften endast kan utföras när du använder den CLFS-baserade LogRecordSequence klassen.

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

Kommentarer

Data som finns i parametern data sammanfogas till en enskild bytematris för att läggas till som post. Ingen etablering görs dock för att dela upp data i matrissegment igen när posten läse.

De angivna reservationerna läggs till i den angivna reservationssamlingen i en atomisk åtgärd med en post-tilläggsåtgärd. Om tillägget misslyckas är inget utrymme reserverat.

Normalt kan den här metoden slutföras innan posten har skrivits. För att säkerställa att en post har skrivits anger du ForceFlush antingen flaggan med parametern recordAppendOptions eller anropar Flush metoden.

Gäller för