use std::sync::Arc;
use ruststream::testing::Coordinator;
use crate::error::PulsarError;
use crate::in_process::bus::Bus;
use crate::in_process::router::ConsumerId;
use crate::message::PulsarPosition;
#[derive(Debug, Clone)]
pub(crate) struct LogSeeker {
bus: Arc<Bus>,
id: ConsumerId,
coordinator: Option<Coordinator>,
}
impl LogSeeker {
pub(crate) const fn new(
bus: Arc<Bus>,
id: ConsumerId,
coordinator: Option<Coordinator>,
) -> Self {
Self {
bus,
id,
coordinator,
}
}
pub(crate) fn seek(&self, to: &PulsarPosition) -> Result<(), PulsarError> {
if self
.bus
.router()
.seek(self.id, to, self.coordinator.as_ref())
{
Ok(())
} else {
Err(PulsarError::NotConnected)
}
}
}