LogRecordSequence.ReserveAndAppend Yöntem

Tanım

Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler.

Aşırı Yüklemeler

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

Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.

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

Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.

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

Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.

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

Parametreler

data
IList<ArraySegment<Byte>>

Birleştirilmiş ve kayıt olarak eklenecek bayt dizisi kesimlerinin listesi.

userRecord
SequenceNumber

Kullanıcı tarafından belirtilen sırada bir sonraki kaydın sıra numarası.

previousRecord
SequenceNumber

Önceki sırada bir sonraki kaydın sıra numarası.

recordAppendOptions
RecordAppendOptions

Verilerin nasıl yazılması gerektiğini belirten geçerli değeri RecordAppendOptions .

reservationCollection
ReservationCollection

Rezervasyon yapmak için rezervasyon koleksiyonu.

reservations
Int64[]

Bayt cinsinden yapılması gereken rezervasyonlar.

Döndürülenler

Eklenen günlük kaydının sıra numarası.

Uygulamalar

Özel durumlar

Bir veya daha fazla bağımsız değişken geçersiz.

Kayıt eklenirken G/Ç hatası oluştu.

Kayıt sırası, yeni kaydı içerecek veya rezervasyonu yapmak için yeterli boş alan oluşturamadı.

yöntemi, dizi atıldıktan sonra çağrıldı.

Bağımsız değişkenlerden biri veya daha fazlası şeklindedir null.

userRecord veya previousRecord bu dizinin temel ve son sıra numaraları arasında değildir.

Kayıt dizisi salt okunur erişimle açıldığından işlem gerçekleştirilemiyor.

Programın yürütülmesine devam etmek için yeterli bellek yok.

Belirtilen günlük dizisine erişim, işletim sistemi tarafından reddedilir.

içinde sığacak data kadar büyük bir rezervasyon bulunamaz reservations.

Açıklamalar

parametresinde data bulunan veriler, kayıt olarak eklenmek üzere tek bir bayt dizisine birleştirilir. Ancak, kayıt okunduğunda verileri dizi kesimlerine bölmek için herhangi bir sağlama yapılmaz.

Belirtilen rezervasyonlar, kayıt ekleme işlemiyle atomik bir işlemde sağlanan rezervasyon koleksiyonuna eklenir. Ekleme başarısız olursa, hiçbir alan ayrılmaz.

Normalde, bu yöntem kayıt yazılmadan önce tamamlanabilir. Bir kaydın yazılmasını sağlamak için parametresini ForceFlush kullanarak recordAppendOptions bayrağını belirtin veya yöntemini çağırın Flush .

Şunlara uygulanır

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

Otomatik olarak tek bir rezervasyon yapar ve bir kaydı diziye ekler. Bu yöntem devralınamaz.

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

Parametreler

data
ArraySegment<Byte>

Birleştirilmiş ve kayıt olarak eklenecek bayt dizisi kesimlerinin listesi.

nextUndoRecord
SequenceNumber

Kullanıcı tarafından belirtilen sırada bir sonraki kaydın sıra numarası.

previousRecord
SequenceNumber

Önceki sırada bir sonraki kaydın sıra numarası.

recordAppendOptions
RecordAppendOptions

Verilerin nasıl yazılması gerektiğini belirten geçerli değeri RecordAppendOptions .

reservationCollection
ReservationCollection

ReservationCollection Rezervasyon yapmak için koleksiyonu içeren.

reservations
Int64[]

Bayt cinsinden yapılması gereken rezervasyonlar.

Döndürülenler

Eklenen günlük kaydının sıra numarası.

Uygulamalar

Özel durumlar

nextUndoRecord veya previousRecord bu dizi için geçerli değil.

-veya-

data en büyük kayıt boyutundan büyük olduğundan eklenemiyor.

-veya-

reservations bu kayıt dizisi tarafından oluşturulmadı.

Bağımsız değişkenlerden biri veya daha fazlası şeklindedir null.

nextUndoRecord veya previousRecord bu dizinin temel ve son sıra numaraları arasında değildir.

İstek beklenmeyen bir G/Ç özel durumu nedeniyle gerçekleştirilemedi.

-veya-

G/Ç cihazı hatası nedeniyle istek gerçekleştirilemedi.

Kayıt dizisi salt okunur erişimle açıldığından işlem gerçekleştirilemiyor.

yöntemi, dizi atıldıktan sonra çağrıldı.

Programın yürütülmesine devam etmek için yeterli bellek yok.

Kayıt dizisi dolu.

Belirtilen günlük dizisine erişim, işletim sistemi tarafından reddedilir.

içinde sığacak data kadar büyük bir rezervasyon bulunamaz reservations.

Örnekler

Aşağıdaki örnekte, rezervasyon yapmak için bu yöntemin nasıl kullanılacağı gösterilmektedir. Bu görevin yalnızca CLFS tabanlı LogRecordSequence sınıf kullanılırken gerçekleştirilebildiğine dikkat edin.

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

Açıklamalar

parametresinde data bulunan veriler, kayıt olarak eklenmek üzere tek bir bayt dizisine birleştirilir. Ancak, kayıt okunduğunda verileri dizi kesimlerine bölmek için herhangi bir sağlama yapılmaz.

Belirtilen rezervasyonlar, kayıt ekleme işlemiyle atomik bir işlemde sağlanan rezervasyon koleksiyonuna eklenir. Ekleme başarısız olursa, hiçbir alan ayrılmaz.

Normalde, bu yöntem kayıt yazılmadan önce tamamlanabilir. Bir kaydın yazılmasını sağlamak için parametresini ForceFlush kullanarak recordAppendOptions bayrağını belirtin veya yöntemini çağırın Flush .

Şunlara uygulanır