cometbft_rpc/endpoint/
subscribe.rs

1//! `/subscribe` endpoint JSON-RPC wrapper
2
3use serde::{Deserialize, Serialize};
4
5use crate::prelude::*;
6use crate::{dialect::Dialect, request::RequestMessage};
7
8/// Subscription request for events.
9///
10/// A subscription request is not a [`SimpleRequest`], because it does not
11/// return a simple, singular response.
12///
13/// [`SimpleRequest`]: ../trait.SimpleRequest.html
14#[derive(Clone, Debug, Deserialize, Eq, PartialEq, Serialize)]
15pub struct Request {
16    pub query: String,
17}
18
19impl Request {
20    /// Query the CometBFT nodes event and stream events (by default over a
21    /// WebSocket connection).
22    pub fn new(query: String) -> Self {
23        Self { query }
24    }
25}
26
27impl RequestMessage for Request {
28    fn method(&self) -> crate::Method {
29        crate::Method::Subscribe
30    }
31}
32
33impl<S: Dialect> crate::Request<S> for Request {
34    type Response = Response;
35}
36
37/// Status responses
38#[derive(Clone, Debug, Deserialize, Serialize)]
39pub struct Response {}
40
41impl crate::Response for Response {}