diff options
Diffstat (limited to 'src/api/client.rs')
| -rw-r--r-- | src/api/client.rs | 67 |
1 files changed, 1 insertions, 66 deletions
diff --git a/src/api/client.rs b/src/api/client.rs index 38baf807..326ebc7d 100644 --- a/src/api/client.rs +++ b/src/api/client.rs @@ -7,8 +7,7 @@ use interprocess::local_socket::traits::Stream as _; use serde::de::DeserializeOwned; use crate::api::schema::{ - ErrorResponse, EventsSubscribeParams, Method, PingParams, Request, ResponseResult, - SubscriptionEventEnvelope, SuccessResponse, + ErrorResponse, Method, PingParams, Request, ResponseResult, SuccessResponse, }; use crate::ipc::LocalStream; @@ -75,37 +74,6 @@ impl ApiClient { read_json_line(&mut reader) } - #[allow(dead_code)] // Kept as the typed subscription API; CLI wait paths use subscribe_value to preserve raw ack errors. - pub fn subscribe( - &self, - id: impl Into<String>, - params: EventsSubscribeParams, - read_timeout: Option<Duration>, - ) -> Result<(SuccessResponse, EventStream), ApiClientError> { - let request = Request { - id: id.into(), - method: Method::EventsSubscribe(params), - }; - let (ack, stream) = self.subscribe_value(&request, read_timeout)?; - Ok((parse_response_value(ack)?, stream)) - } - - pub fn subscribe_value( - &self, - request: &Request, - read_timeout: Option<Duration>, - ) -> Result<(serde_json::Value, EventStream), ApiClientError> { - let mut stream = self.connect()?; - write_request(&mut stream, request)?; - if let Some(timeout) = read_timeout { - set_timeout_best_effort(&stream, TimeoutKind::Recv, timeout)?; - } - - let mut reader = BufReader::new(stream); - let ack = read_json_line(&mut reader)?; - Ok((ack, EventStream { reader })) - } - pub fn status(&self) -> Result<crate::api::RuntimeStatus, ApiClientError> { let response = self.request(Request { id: "api-client:status".into(), @@ -152,23 +120,6 @@ fn set_timeout_best_effort( } } -pub struct EventStream { - reader: BufReader<LocalStream>, -} - -impl EventStream { - pub fn next_value(&mut self) -> Result<Option<serde_json::Value>, ApiClientError> { - read_optional_json_line(&mut self.reader) - } - - pub fn next_event(&mut self) -> Result<Option<SubscriptionEventEnvelope>, ApiClientError> { - self.next_value()? - .map(serde_json::from_value) - .transpose() - .map_err(ApiClientError::Json) - } -} - #[derive(Debug)] pub enum ApiClientError { Io(io::Error), @@ -222,22 +173,6 @@ fn read_json_line<T: DeserializeOwned>( serde_json::from_str(&line).map_err(ApiClientError::Json) } -fn read_optional_json_line<T: DeserializeOwned>( - reader: &mut BufReader<LocalStream>, -) -> Result<Option<T>, ApiClientError> { - let mut line = String::new(); - let read = reader.read_line(&mut line)?; - if read == 0 { - return Ok(None); - } - if line.trim().is_empty() { - return Err(ApiClientError::EmptyResponse); - } - serde_json::from_str(&line) - .map(Some) - .map_err(ApiClientError::Json) -} - #[derive(serde::Deserialize)] #[serde(untagged)] enum WireResponse { |
