tycho_collator/validator/rpc/
client.rs1use std::sync::Arc;
2
3use anyhow::Result;
4use tycho_network::{Network, PeerId, PrefixedRequest, PrivateOverlay, Response};
5
6#[derive(Clone)]
7#[repr(transparent)]
8pub struct ValidatorClient {
9 inner: Arc<Inner>,
10}
11
12impl ValidatorClient {
13 pub fn new(network: Network, overlay: PrivateOverlay) -> Self {
14 Self {
15 inner: Arc::new(Inner { network, overlay }),
16 }
17 }
18
19 pub fn network(&self) -> &Network {
20 &self.inner.network
21 }
22
23 pub fn overlay(&self) -> &PrivateOverlay {
24 &self.inner.overlay
25 }
26
27 pub fn peer_id(&self) -> &PeerId {
28 self.inner.network.peer_id()
29 }
30
31 pub fn request_from_tl<T>(&self, body: T) -> PrefixedRequest
32 where
33 T: tl_proto::TlWrite<Repr = tl_proto::Boxed>,
34 {
35 self.inner.overlay.request_from_tl(body)
36 }
37
38 pub async fn query(&self, peer_id: &PeerId, req: PrefixedRequest) -> Result<Response> {
39 self.inner
40 .overlay
41 .query(&self.inner.network, peer_id, req)
42 .await
43 }
44}
45
46struct Inner {
47 network: Network,
48 overlay: PrivateOverlay,
49}