Поделиться через


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

Происходит, когда последовательность записей определяет завершающую часть, которую необходимо переместить вперед.

Применяется к