LogRecordSequence.ReserveAndAppend Metode
Definisi
Penting
Beberapa informasi terkait produk prarilis yang dapat diubah secara signifikan sebelum dirilis. Microsoft tidak memberikan jaminan, tersirat maupun tersurat, sehubungan dengan informasi yang diberikan di sini.
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan.
Overload
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan. |
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[]) |
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan. |
ReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan.
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
Parameter
- data
- IList<ArraySegment<Byte>>
Daftar segmen array byte yang akan digabungkan dan ditambahkan sebagai rekaman.
- userRecord
- SequenceNumber
Nomor urut rekaman berikutnya dalam urutan yang ditentukan pengguna.
- previousRecord
- SequenceNumber
Nomor urut rekaman berikutnya dalam Urutan sebelumnya.
- recordAppendOptions
- RecordAppendOptions
Nilai RecordAppendOptions valid yang menentukan bagaimana data harus ditulis.
- reservationCollection
- ReservationCollection
Pengumpulan reservasi untuk melakukan reservasi.
- reservations
- Int64[]
Reservasi yang harus dibuat, dalam byte.
Mengembalikan
Nomor urut rekaman log yang ditambahkan.
Penerapan
Pengecualian
Satu atau beberapa argumen tidak valid.
Terjadi kesalahan I/O saat menambahkan rekaman.
Urutan rekaman tidak dapat membuat ruang kosong yang cukup untuk memuat rekaman baru, atau untuk melakukan reservasi.
Metode ini dipanggil setelah urutan dibuang.
Satu atau beberapa argumen adalah null
.
userRecord
atau previousRecord
bukan antara nomor urutan dasar dan terakhir dari urutan ini.
Operasi tidak dapat dilakukan karena urutan rekaman dibuka dengan akses baca-saja.
Memori tidak cukup untuk melanjutkan eksekusi program.
Akses untuk urutan log yang ditentukan ditolak oleh sistem operasi.
Tidak ada reservasi yang cukup besar agar pas data
dapat ditemukan di reservations
.
Keterangan
Data yang terkandung dalam data
parameter akan digabungkan ke dalam array byte tunggal untuk ditambahkan sebagai rekaman. Namun, tidak ada ketentuan yang dibuat untuk memisahkan data kembali ke segmen array saat rekaman dibaca.
Reservasi yang ditentukan ditambahkan ke pengumpulan reservasi yang disediakan dalam operasi atomik dengan operasi penambahan rekaman. Jika penampan gagal, tidak ada ruang yang dicadangkan.
Biasanya, metode ini dapat diselesaikan sebelum rekaman ditulis. Untuk memastikan bahwa rekaman telah ditulis, tentukan ForceFlush bendera menggunakan recordAppendOptions
parameter , atau panggil Flush metode .
Berlaku untuk
ReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[])
Secara otomatis membuat satu reservasi dan menambahkan catatan ke urutan. Metode ini tidak dapat diwariskan.
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
Parameter
- data
- ArraySegment<Byte>
Daftar segmen array byte yang akan digabungkan dan ditambahkan sebagai rekaman.
- nextUndoRecord
- SequenceNumber
Nomor urut rekaman berikutnya dalam urutan yang ditentukan pengguna.
- previousRecord
- SequenceNumber
Nomor urut rekaman berikutnya dalam Urutan sebelumnya.
- recordAppendOptions
- RecordAppendOptions
Nilai RecordAppendOptions valid yang menentukan bagaimana data harus ditulis.
- reservationCollection
- ReservationCollection
Yang ReservationCollection berisi koleksi untuk melakukan reservasi.
- reservations
- Int64[]
Reservasi yang harus dibuat, dalam byte.
Mengembalikan
Nomor urut rekaman log yang ditambahkan.
Penerapan
Pengecualian
nextUndoRecord
atau previousRecord
tidak valid untuk urutan ini.
-atau-
data
tidak dapat ditambahkan karena lebih besar dari ukuran rekaman maksimum.
-atau-
reservations
tidak dibuat oleh urutan rekaman ini.
Satu atau beberapa argumen adalah null
.
nextUndoRecord
atau previousRecord
bukan antara nomor urutan dasar dan terakhir dari urutan ini.
Permintaan tidak dapat dilakukan karena pengecualian I/O yang tidak terduga.
-atau-
Permintaan tidak dapat dilakukan karena kesalahan perangkat I/O.
Operasi tidak dapat dilakukan karena urutan rekaman dibuka dengan akses baca-saja.
Metode ini dipanggil setelah urutan dibuang.
Memori tidak cukup untuk melanjutkan eksekusi program.
Urutan rekaman penuh.
Akses untuk urutan log yang ditentukan ditolak oleh sistem operasi.
Tidak ada reservasi yang cukup besar agar pas data
dapat ditemukan di reservations
.
Contoh
Contoh berikut menunjukkan cara menggunakan metode ini untuk melakukan reservasi. Perhatikan bahwa tugas ini hanya dapat dilakukan saat menggunakan kelas berbasis 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);
Keterangan
Data yang terkandung dalam data
parameter akan digabungkan ke dalam array byte tunggal untuk ditambahkan sebagai rekaman. Namun, tidak ada ketentuan yang dibuat untuk memisahkan data kembali ke segmen array saat rekaman dibaca.
Reservasi yang ditentukan ditambahkan ke pengumpulan reservasi yang disediakan dalam operasi atomik dengan operasi penambahan rekaman. Jika penampan gagal, tidak ada ruang yang dicadangkan.
Biasanya, metode ini dapat diselesaikan sebelum rekaman ditulis. Untuk memastikan bahwa rekaman telah ditulis, tentukan ForceFlush bendera menggunakan recordAppendOptions
parameter , atau panggil Flush metode .