use super::Client;
use crate::{bson::Document, client::session::ClusterTime, ClientSession as AsyncClientSession};
pub struct ClientSession {
pub(crate) async_client_session: AsyncClientSession,
}
impl From<AsyncClientSession> for ClientSession {
fn from(async_client_session: AsyncClientSession) -> Self {
Self {
async_client_session,
}
}
}
impl<'a> From<&'a mut ClientSession> for &'a mut AsyncClientSession {
fn from(value: &'a mut ClientSession) -> &'a mut AsyncClientSession {
&mut value.async_client_session
}
}
impl ClientSession {
pub(crate) fn new(async_client_session: AsyncClientSession) -> Self {
Self {
async_client_session,
}
}
pub fn client(&self) -> Client {
self.async_client_session.client().into()
}
pub fn id(&self) -> &Document {
self.async_client_session.id()
}
pub fn cluster_time(&self) -> Option<&ClusterTime> {
self.async_client_session.cluster_time()
}
pub fn advance_cluster_time(&mut self, to: &ClusterTime) {
self.async_client_session.advance_cluster_time(to)
}
}