use tonic::{Request, Status};
use tracing::{event, instrument, Level};
use crate::TritonClient;
use crate::inference::{ServerLiveRequest, ServerReadyRequest};
use crate::inference::{ServerMetadataRequest, ServerMetadataResponse};
impl TritonClient {
#[instrument]
pub async fn is_server_live(&self) -> Result<bool, Status> {
let request = Request::new(ServerLiveRequest {});
match self.client().server_live(request).await {
Ok(r) => {
let server_liveliness = r.get_ref().live;
event!(Level::INFO, server_live = ?r);
Ok(server_liveliness)
}
Err(s) => {
event!(Level::ERROR, "failed to query server liveliness, {s}");
Err(s)
}
}
}
#[instrument]
pub async fn is_server_ready(&self) -> Result<bool, Status> {
let request = Request::new(ServerReadyRequest {});
match self.client().server_ready(request).await {
Ok(r) => {
let readiness = r.get_ref().ready;
event!(Level::INFO, server_ready = ?r);
Ok(readiness)
}
Err(s) => {
event!(Level::ERROR, "failed to query server readiness, {s}");
Err(s)
}
}
}
#[instrument]
pub async fn server_metadata(&self) -> Result<ServerMetadataResponse, Status> {
let request = Request::new(ServerMetadataRequest {});
match self.client().server_metadata(request).await {
Ok(r) => {
event!(Level::INFO, server_metadata = ?r);
Ok(r.into_inner())
}
Err(s) => {
event!(Level::ERROR, "failed to get server metadata, {s}");
Err(s)
}
}
}
}