use crate::{ClientState, DiagnosticEvent, IggyDuration, IggyError};
use async_trait::async_trait;
use bytes::Bytes;
use std::sync::Arc;
#[async_trait]
pub trait BinaryTransport {
async fn get_state(&self) -> ClientState;
async fn set_state(&self, state: ClientState);
async fn publish_event(&self, event: DiagnosticEvent);
async fn send_raw_with_response(&self, code: u32, payload: Bytes) -> Result<Bytes, IggyError>;
fn get_heartbeat_interval(&self) -> IggyDuration;
fn consumer_group_state(&self) -> Arc<crate::ConsumerGroupClientState>;
}
mod vsr_session_sealed {
pub trait Sealed {}
}
#[async_trait]
pub trait VsrSessionControl: vsr_session_sealed::Sealed + BinaryTransport {
async fn bind_vsr_session(&self, session: u64) -> Result<(), IggyError>;
async fn reset_vsr_session(&self) -> Result<(), IggyError>;
fn sdk_version(&self) -> &'static str;
}
pub use vsr_session_sealed::Sealed as VsrSessionSealed;