use std::sync::atomic::Ordering;
use turbomcp_protocol::types::{LogLevel, PingResult, SetLevelRequest, SetLevelResult};
use turbomcp_protocol::{Error, Result};
impl<T: turbomcp_transport::Transport + 'static> super::super::core::Client<T> {
pub async fn ping(&self) -> Result<PingResult> {
if !self.inner.initialized.load(Ordering::Relaxed) {
return Err(Error::invalid_request("Client not initialized"));
}
let response: PingResult = self.inner.protocol.request("ping", None).await?;
Ok(response)
}
pub async fn set_log_level(&self, level: LogLevel) -> Result<SetLevelResult> {
if !self.inner.initialized.load(Ordering::Relaxed) {
return Err(Error::invalid_request("Client not initialized"));
}
let request = SetLevelRequest { level };
let response: SetLevelResult = self
.inner
.protocol
.request("logging/setLevel", Some(serde_json::to_value(request)?))
.await?;
Ok(response)
}
}