CachedMessageBlock<TCachedMessage> Class
Definition
Important
Some information relates to prerelease product that may be substantially modified before it’s released. Microsoft makes no warranties, express or implied, with respect to the information provided here.
CachedMessageBlock is a block of tightly packed structures containing tracking data for cached messages. This data is tightly packed to reduced GC pressure. The tracking data is used by the queue cache to walk the cache serving ordered queue messages by stream.
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))
Type Parameters
- TCachedMessage
Tightly packed structure. Struct should contain only value types.
- Inheritance
Constructors
CachedMessageBlock<TCachedMessage>(Int32) |
Block of cached messages |
Properties
HasCapacity |
More messages can be added to the blocks |
IsEmpty |
Block is empty |
Item[Int32] |
Access the cached message at the provided index. |
ItemCount |
Message count in this block |
NewestMessage |
Newest message in this block |
NewestMessageIndex |
Index of most recent message added to the block |
Node |
Linked list node, so this message block can be kept in a linked list |
OldestMessage |
Oldest message in the block |
OldestMessageIndex |
Index of oldest message in this block |
Pool |
Gets the pool to return this resource to upon disposal. A pool must set this property upon resource allocation. (Inherited from PooledResource<T>) |
Methods
Add<TQueueMessage>(TQueueMessage, DateTime, ICacheDataAdapter<TQueueMessage,TCachedMessage>) |
Add a message from the queue to the block. Converts the queue message to a cached message and stores it at the end of the block. |
Dispose() |
Returns item to pool. (Inherited from PooledResource<T>) |
GetIndexOfFirstMessageLessThanOrEqualTo(StreamSequenceToken, ICacheDataComparer<TCachedMessage>) |
Gets the index of the first message in this block that has a sequence token at or before the provided token |
GetNewestSequenceToken<TQueueMessage>(ICacheDataAdapter<TQueueMessage,TCachedMessage>) |
Gets the sequence token of the newest message in this block |
GetOldestSequenceToken<TQueueMessage>(ICacheDataAdapter<TQueueMessage,TCachedMessage>) |
Gets the sequence token of the oldest message in this block |
GetSequenceToken<TQueueMessage>(Int32, ICacheDataAdapter<TQueueMessage,TCachedMessage>) |
Gets the sequence token of the cached message a the provided index |
OnResetState() |
Resets this blocks state to that of an empty block. |
Remove() |
Removes a message from the start of the block (oldest data). Returns true if more items are still available. |
SignalPurge() |
If this object is to be used in a fixed size object pool, this call should be overridden with the purge implementation that returns the object to the pool. (Inherited from PooledResource<T>) |
TryFindFirstMessage(IStreamIdentity, ICacheDataComparer<TCachedMessage>, Int32) |
Tries to find the first message in the block that is part of the provided stream. |
TryFindNextMessage(Int32, IStreamIdentity, ICacheDataComparer<TCachedMessage>, Int32) |
Tries to get the next message from the provided stream, starting at the start index. |