pub struct DurableChannel { /* private fields */ }Expand description
Haematite-backed durable channel state.
Implementations§
Source§impl DurableChannel
impl DurableChannel
Sourcepub fn new(
channel_id: impl Into<String>,
partition_count: usize,
store: Arc<dyn DurableStore>,
) -> Result<Self, DurabilityError>
pub fn new( channel_id: impl Into<String>, partition_count: usize, store: Arc<dyn DurableStore>, ) -> Result<Self, DurabilityError>
Creates a new durable channel with all partition sequences initialized to zero.
§Errors
Returns DurabilityError::ConfigError when partition_count is zero.
Sourcepub fn with_partition_key<F>(
channel_id: impl Into<String>,
partition_count: usize,
store: Arc<dyn DurableStore>,
partition_key: F,
) -> Result<Self, DurabilityError>
pub fn with_partition_key<F>( channel_id: impl Into<String>, partition_count: usize, store: Arc<dyn DurableStore>, partition_key: F, ) -> Result<Self, DurabilityError>
Creates a durable channel with a caller-provided partition key function.
§Errors
Returns DurabilityError::ConfigError when partition_count is zero.
Sourcepub fn from_recovered_sequences(
channel_id: impl Into<String>,
partition_count: usize,
store: Arc<dyn DurableStore>,
next_sequences: Vec<u64>,
) -> Result<Self, DurabilityError>
pub fn from_recovered_sequences( channel_id: impl Into<String>, partition_count: usize, store: Arc<dyn DurableStore>, next_sequences: Vec<u64>, ) -> Result<Self, DurabilityError>
Creates a durable channel from explicit recovered next sequence counters.
§Errors
Returns DurabilityError::ConfigError when partition_count is zero
or the recovered sequence vector length differs from partition_count.
Sourcepub fn from_config(
channel_id: impl Into<String>,
config: DurabilityConfig,
store: Arc<dyn DurableStore>,
) -> Result<Self, DurabilityError>
pub fn from_config( channel_id: impl Into<String>, config: DurabilityConfig, store: Arc<dyn DurableStore>, ) -> Result<Self, DurabilityError>
Creates a durable channel from validated durability configuration.
§Errors
Returns DurabilityError::ConfigError when config is ephemeral.
Sourcepub fn channel_id(&self) -> &str
pub fn channel_id(&self) -> &str
Returns the durable channel identifier.
Sourcepub const fn partition_count(&self) -> usize
pub const fn partition_count(&self) -> usize
Returns the number of partitions owned by this channel.
Sourcepub fn next_expected_sequence(&self, partition_index: usize) -> Option<u64>
pub fn next_expected_sequence(&self, partition_index: usize) -> Option<u64>
Returns the next expected sequence for a partition, if it exists.
Sourcepub fn next_sequences(&self) -> &[u64]
pub fn next_sequences(&self) -> &[u64]
Returns all next expected sequence counters.
Sourcepub fn partition_for(&self, envelope: &MessageEnvelope) -> usize
pub fn partition_for(&self, envelope: &MessageEnvelope) -> usize
Computes the partition index for an envelope without touching storage.
Sourcepub fn stream_key_for(&self, partition_index: usize) -> String
pub fn stream_key_for(&self, partition_index: usize) -> String
Formats the haematite stream key for a channel partition.
Sourcepub async fn publish(
&mut self,
envelope: &MessageEnvelope,
) -> Result<u64, DurabilityError>
pub async fn publish( &mut self, envelope: &MessageEnvelope, ) -> Result<u64, DurabilityError>
Persists an envelope before acknowledging the publish.
§Errors
Returns envelope serialization errors and propagates any
DurabilityError returned by DurableStore::append, including
DurabilityError::SequenceConflict.
Sourcepub async fn flush_store(&self) -> Result<(), DurabilityError>
pub async fn flush_store(&self) -> Result<(), DurabilityError>
Flushes the backing store so every appended message is durably persisted.
§Errors
Propagates any DurabilityError returned by DurableStore::flush.
Trait Implementations§
Source§impl Clone for DurableChannel
impl Clone for DurableChannel
Source§fn clone(&self) -> DurableChannel
fn clone(&self) -> DurableChannel
1.0.0 (const: unstable) · Source§fn clone_from(&mut self, source: &Self)
fn clone_from(&mut self, source: &Self)
source. Read more