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 实例,每条日志记录都分配有一个唯一的序号。 在给定的记录序列中,序号是严格递增的。 日志记录由不透明数据组成,它们以字节数组段的 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()

执行与释放或重置非托管资源关联的应用程序定义的任务。

(继承自 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

当记录序列确定必须前移尾数据时发生。

适用于