IRecordSequence 介面

定義

提供記錄順序的泛型介面。

public interface class IRecordSequence : IDisposable
public interface IRecordSequence : IDisposable
type IRecordSequence = interface
    interface IDisposable
Public Interface IRecordSequence
Implements IDisposable
衍生
實作

備註

IRecordSequence 介面會提供記錄導向資料流的抽象介面。 IRecordSequence 執行個體可以用來讀取和寫入記錄檔記錄。

IRecordSequence 介面提供下列功能:

  • 使用 Append 方法,附加記錄檔記錄。

  • 使用 ReadLogRecords 方法,讀取附加的記錄。

  • 使用 WriteRestartArea 方法,寫入特殊的重新啟動記錄。

  • 使用 ReadRestartAreas 方法,從最近寫入的重新啟動記錄中讀取重新啟動記錄。

  • 使用 Flush 方法將記錄排清到永久性存放區。

  • 保留空間以便附加記錄。

  • 將記錄檔基底往前移以釋放記錄空間。

  • 接收 TailPinned 事件通知以移動記錄檔基底來釋放空間。

記錄檔記錄會附加到 IRecordSequence 執行個體,而且每個記錄檔記錄會被賦予唯一的序號。 序號會在指定的記錄順序中嚴謹地以固定方式增加。 記錄檔記錄由不透明的資料組成,這些資料是提供給位元組 ArraySegments 之 IRecordSequence 中的 IList 執行個體。

IRecordSequence 介面也會公開一些提供記錄界限相關資訊的基本屬性。

  • BaseSequenceNumber 屬性包含記錄順序中第一個有效記錄的序號。

  • LastSequenceNumber 屬性包含保證大於上一個附加記錄之序號的序號。

  • RestartSequenceNumber 屬性包含最後一個寫入之重新啟動區域的序號。

  • MaximumRecordLength 屬性包含可在順序中附加或讀取之最大記錄的大小。

  • ReservedBytes 屬性包含在此記錄順序中建立之所有保留區的總大小。

  • 如果 RetryAppend 屬性設為 true,且 Append 作業因為順序中沒有空間而失敗,則記錄順序會嘗試釋放空間,然後重試此「附加」作業。

屬性

BaseSequenceNumber

在衍生類別中覆寫時,取得目前 IRecordSequence 中第一個有效記錄的序號。

LastSequenceNumber

在衍生類別中覆寫時,取得大於上一筆附加記錄的序號。

MaximumRecordLength

在衍生類別中覆寫時,取得可在此順序中附加或讀取的最大記錄大小 (以位元組為單位)。

ReservedBytes

在衍生類別中覆寫時,取得已保留的位元組總數。

RestartSequenceNumber

在衍生類別中覆寫時,取得最近寫入之重新啟動區域的序號。

RetryAppend

取得或設定值,這個值表示是否在記錄檔已滿時自動重試附加作業。

方法

AdvanceBaseSequenceNumber(SequenceNumber)

將記錄檔的基底序號往前移動。

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions)

在衍生類別中覆寫時,將記錄檔記錄寫入 IRecordSequence

Append(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

在衍生類別中覆寫時,使用之前在順序中保留的空間,將記錄檔記錄附加到 IRecordSequence

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions)

在衍生類別中覆寫時,將記錄檔記錄附加到 IRecordSequence

Append(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection)

在衍生類別中覆寫時,使用之前在順序中保留的空間,將記錄檔記錄附加到 IRecordSequence

BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object)

在衍生類別中覆寫時,開始非同步的附加作業。

BeginAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的附加作業。

BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的附加作業。

BeginAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的附加作業。

BeginFlush(SequenceNumber, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的清除作業。

BeginReserveAndAppend(ArraySegment<Byte>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

在衍生類別中覆寫時,開始非同步的保留和附加作業。

BeginReserveAndAppend(IList<ArraySegment<Byte>>, SequenceNumber, SequenceNumber, RecordAppendOptions, ReservationCollection, Int64[], AsyncCallback, Object)

在衍生類別中覆寫時,開始非同步的保留和附加作業。

BeginWriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的重新啟動區域寫入作業。

BeginWriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection, AsyncCallback, Object)

在衍生類別中覆寫時,使用先前在順序中保留的空間,開始非同步的重新啟動區域寫入作業。

CreateReservationCollection()

在衍生類別中覆寫時,建立新的 ReservationCollection

Dispose()

執行與釋放 (Free)、釋放 (Release) 或重設 Unmanaged 資源相關聯之應用程式定義的工作。

(繼承來源 IDisposable)
EndAppend(IAsyncResult)

在衍生類別中覆寫時,結束非同步的附加作業。

EndFlush(IAsyncResult)

在衍生類別中覆寫時,結束非同步的清除作業。

EndReserveAndAppend(IAsyncResult)

在衍生類別中覆寫時,結束非同步的保留和附加作業。

EndWriteRestartArea(IAsyncResult)

在衍生類別中覆寫時,結束非同步的重新啟動區域寫入作業。

Flush()

在衍生類別中覆寫時,確定已寫入所有附加的記錄。

Flush(SequenceNumber)

在衍生類別中覆寫時,確定已將內含指定序號的所有附加記錄永久寫入。

ReadLogRecords(SequenceNumber, LogRecordEnumeratorType)

在衍生類別中覆寫時,將順序中的記錄的可列舉集合傳回。

ReadRestartAreas()

在衍生類別中覆寫時,將順序中的重新啟動區域的可列舉集合傳回。

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

在衍生類別中覆寫時,自動建立單一保留區,並將記錄附加至順序。

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

在衍生類別中覆寫時,自動建立單一保留區,並將記錄附加至順序。

WriteRestartArea(ArraySegment<Byte>)

在衍生類別中覆寫時,將重新啟動區域寫入 IRecordSequence

WriteRestartArea(ArraySegment<Byte>, SequenceNumber)

在衍生類別中覆寫時,將重新啟動區域寫入 IRecordSequence,並更新基底序號。

WriteRestartArea(ArraySegment<Byte>, SequenceNumber, ReservationCollection)

在衍生類別中覆寫時,使用保留區將重新啟動區域寫入 IRecordSequence,並更新基底序號。

WriteRestartArea(IList<ArraySegment<Byte>>)

在衍生類別中覆寫時,將重新啟動區域寫入 IRecordSequence

WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber)

在衍生類別中覆寫時,將重新啟動區域寫入 IRecordSequence,並更新基底序號。

WriteRestartArea(IList<ArraySegment<Byte>>, SequenceNumber, ReservationCollection)

在衍生類別中覆寫時,使用保留區將重新啟動區域寫入 IRecordSequence,並更新基底序號。

事件

TailPinned

會在記錄順序判斷必須將結尾往前移動時發生。

適用於