use super::*;
use meerkat_core::service::SessionServiceCommsExt;
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
pub trait MobSessionService: SessionServiceCommsExt {
async fn subscribe_session_events(
&self,
session_id: &SessionId,
) -> Result<EventStream, StreamError> {
<Self as SessionService>::subscribe_session_events(self, session_id).await
}
fn supports_persistent_sessions(&self) -> bool {
false
}
async fn session_belongs_to_mob(&self, _session_id: &SessionId, _mob_id: &MobId) -> bool {
false
}
async fn cancel_all_checkpointers(&self) {}
async fn rearm_all_checkpointers(&self) {}
}
#[cfg_attr(target_arch = "wasm32", async_trait::async_trait(?Send))]
#[cfg_attr(not(target_arch = "wasm32"), async_trait::async_trait)]
impl<B> MobSessionService for meerkat_session::EphemeralSessionService<B>
where
B: meerkat_session::SessionAgentBuilder + 'static,
{
fn supports_persistent_sessions(&self) -> bool {
false
}
async fn subscribe_session_events(
&self,
session_id: &SessionId,
) -> Result<EventStream, StreamError> {
meerkat_session::EphemeralSessionService::<B>::subscribe_session_events(self, session_id)
.await
}
async fn session_belongs_to_mob(&self, _session_id: &SessionId, _mob_id: &MobId) -> bool {
false
}
}
#[cfg(not(target_arch = "wasm32"))]
#[async_trait::async_trait]
impl<B> MobSessionService for meerkat_session::PersistentSessionService<B>
where
B: meerkat_session::SessionAgentBuilder + 'static,
{
fn supports_persistent_sessions(&self) -> bool {
true
}
async fn subscribe_session_events(
&self,
session_id: &SessionId,
) -> Result<EventStream, StreamError> {
meerkat_session::PersistentSessionService::<B>::subscribe_session_events(self, session_id)
.await
}
async fn session_belongs_to_mob(&self, _session_id: &SessionId, _mob_id: &MobId) -> bool {
false
}
async fn cancel_all_checkpointers(&self) {
meerkat_session::PersistentSessionService::<B>::cancel_all_checkpointers(self).await;
}
async fn rearm_all_checkpointers(&self) {
meerkat_session::PersistentSessionService::<B>::rearm_all_checkpointers(self).await;
}
}