use crate::prelude::IggyClient;
use async_trait::async_trait;
use iggy_common::ConsumerOffsetClient;
use iggy_common::locking::IggyRwLockFn;
use iggy_common::{Consumer, ConsumerOffsetInfo, Identifier, IggyError};
#[async_trait]
impl ConsumerOffsetClient for IggyClient {
async fn store_consumer_offset(
&self,
consumer: &Consumer,
stream_id: &Identifier,
topic_id: &Identifier,
partition_id: Option<u32>,
offset: u64,
) -> Result<(), IggyError> {
self.client
.read()
.await
.store_consumer_offset(consumer, stream_id, topic_id, partition_id, offset)
.await
}
async fn get_consumer_offset(
&self,
consumer: &Consumer,
stream_id: &Identifier,
topic_id: &Identifier,
partition_id: Option<u32>,
) -> Result<Option<ConsumerOffsetInfo>, IggyError> {
self.client
.read()
.await
.get_consumer_offset(consumer, stream_id, topic_id, partition_id)
.await
}
async fn delete_consumer_offset(
&self,
consumer: &Consumer,
stream_id: &Identifier,
topic_id: &Identifier,
partition_id: Option<u32>,
) -> Result<(), IggyError> {
self.client
.read()
.await
.delete_consumer_offset(consumer, stream_id, topic_id, partition_id)
.await
}
}