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


CachedMessageBlock<TCachedMessage> Класс

Определение

CachedMessageBlock — это блок тесно упакованных структур, содержащих данные отслеживания кэшированных сообщений. Эти данные плотно упакованы для снижения давления мусора. Данные отслеживания используются кэшем очередей для обхода кэша, обслуживая упорядоченные сообщения очереди по потоку.

public class CachedMessageBlock<TCachedMessage> : Orleans.Providers.Streams.Common.PooledResource<Orleans.Providers.Streams.Common.CachedMessageBlock<TCachedMessage>> where TCachedMessage : struct
type CachedMessageBlock<'CachedMessage (requires 'CachedMessage : struct)> = class
    inherit PooledResource<CachedMessageBlock<'CachedMessage>>
Public Class CachedMessageBlock(Of TCachedMessage)
Inherits PooledResource(Of CachedMessageBlock(Of TCachedMessage))

Параметры типа

TCachedMessage

Плотно упакованная структура. Struct должна содержать только типы значений.

Наследование
CachedMessageBlock<TCachedMessage>

Конструкторы

CachedMessageBlock<TCachedMessage>(Int32)

Блок кэшированных сообщений

Свойства

HasCapacity

В блоки можно добавить дополнительные сообщения

IsEmpty

Блок пуст

Item[Int32]

Доступ к кэшированному сообщению по указанному индексу.

ItemCount

Число сообщений в этом блоке

NewestMessage

Последнее сообщение в этом блоке

NewestMessageIndex

Индекс последнего сообщения, добавленного в блок

Node

Узел связанного списка, поэтому этот блок сообщений можно хранить в связанном списке

OldestMessage

Самое старое сообщение в блоке

OldestMessageIndex

Индекс самого старого сообщения в этом блоке

Pool

Возвращает пул, в который возвращается этот ресурс при удалении. Пул должен задать это свойство при выделении ресурсов.

(Унаследовано от PooledResource<T>)

Методы

Add<TQueueMessage>(TQueueMessage, DateTime, ICacheDataAdapter<TQueueMessage,TCachedMessage>)

Добавьте сообщение из очереди в блок. Преобразует сообщение очереди в кэшированное и сохраняет его в конце блока.

Dispose()

Возвращает элемент в пул.

(Унаследовано от PooledResource<T>)
GetIndexOfFirstMessageLessThanOrEqualTo(StreamSequenceToken, ICacheDataComparer<TCachedMessage>)

Возвращает индекс первого сообщения в этом блоке с маркером последовательности в указанном маркере или до него.

GetNewestSequenceToken<TQueueMessage>(ICacheDataAdapter<TQueueMessage,TCachedMessage>)

Возвращает токен последовательности для новейшего сообщения в этом блоке.

GetOldestSequenceToken<TQueueMessage>(ICacheDataAdapter<TQueueMessage,TCachedMessage>)

Возвращает токен последовательности самого старого сообщения в этом блоке.

GetSequenceToken<TQueueMessage>(Int32, ICacheDataAdapter<TQueueMessage,TCachedMessage>)

Возвращает токен последовательности кэшированного сообщения с указанным индексом.

OnResetState()

Сбрасывает состояние этого блока в состояние пустого блока.

Remove()

Удаляет сообщение из начала блока (самые старые данные). Возвращает значение true, если по-прежнему доступно больше элементов.

SignalPurge()

Если этот объект будет использоваться в пуле объектов фиксированного размера, этот вызов должен быть переопределен реализацией очистки, которая возвращает объект в пул.

(Унаследовано от PooledResource<T>)
TryFindFirstMessage(IStreamIdentity, ICacheDataComparer<TCachedMessage>, Int32)

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

TryFindNextMessage(Int32, IStreamIdentity, ICacheDataComparer<TCachedMessage>, Int32)

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

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