ibc_query/core/connection/
service.rs1use ibc::core::host::ConsensusStateRef;
7use ibc::core::primitives::prelude::*;
8use ibc_proto::google::protobuf::Any;
9use ibc_proto::ibc::core::connection::v1::query_server::Query as ConnectionQuery;
10use ibc_proto::ibc::core::connection::v1::{
11 QueryClientConnectionsRequest, QueryClientConnectionsResponse,
12 QueryConnectionClientStateRequest, QueryConnectionClientStateResponse,
13 QueryConnectionConsensusStateRequest, QueryConnectionConsensusStateResponse,
14 QueryConnectionParamsRequest, QueryConnectionParamsResponse, QueryConnectionRequest,
15 QueryConnectionResponse, QueryConnectionsRequest, QueryConnectionsResponse,
16};
17use tonic::{Request, Response, Status};
18
19use super::{
20 query_client_connections, query_connection, query_connection_client_state,
21 query_connection_consensus_state, query_connection_params, query_connections,
22};
23use crate::core::context::QueryContext;
24use crate::utils::{IntoDomain, IntoResponse, TryIntoDomain};
25
26pub struct ConnectionQueryService<I>
32where
33 I: QueryContext + Send + Sync + 'static,
34 ConsensusStateRef<I>: Into<Any>,
35{
36 ibc_context: I,
37}
38
39impl<I> ConnectionQueryService<I>
40where
41 I: QueryContext + Send + Sync + 'static,
42 ConsensusStateRef<I>: Into<Any>,
43{
44 pub fn new(ibc_context: I) -> Self {
48 Self { ibc_context }
49 }
50}
51
52#[tonic::async_trait]
53impl<I> ConnectionQuery for ConnectionQueryService<I>
54where
55 I: QueryContext + Send + Sync + 'static,
56 ConsensusStateRef<I>: Into<Any>,
57{
58 async fn connection(
59 &self,
60 request: Request<QueryConnectionRequest>,
61 ) -> Result<Response<QueryConnectionResponse>, Status> {
62 query_connection(&self.ibc_context, &request.try_into_domain()?)?.into_response()
63 }
64
65 async fn connections(
66 &self,
67 request: Request<QueryConnectionsRequest>,
68 ) -> Result<Response<QueryConnectionsResponse>, Status> {
69 query_connections(&self.ibc_context, &request.into_domain())?.into_response()
70 }
71
72 async fn client_connections(
73 &self,
74 request: Request<QueryClientConnectionsRequest>,
75 ) -> Result<Response<QueryClientConnectionsResponse>, Status> {
76 query_client_connections(&self.ibc_context, &request.try_into_domain()?)?.into_response()
77 }
78
79 async fn connection_client_state(
80 &self,
81 request: Request<QueryConnectionClientStateRequest>,
82 ) -> Result<Response<QueryConnectionClientStateResponse>, Status> {
83 query_connection_client_state(&self.ibc_context, &request.try_into_domain()?)?
84 .into_response()
85 }
86
87 async fn connection_consensus_state(
88 &self,
89 request: Request<QueryConnectionConsensusStateRequest>,
90 ) -> Result<Response<QueryConnectionConsensusStateResponse>, Status> {
91 query_connection_consensus_state(&self.ibc_context, &request.try_into_domain()?)?
92 .into_response()
93 }
94
95 async fn connection_params(
96 &self,
97 request: Request<QueryConnectionParamsRequest>,
98 ) -> Result<Response<QueryConnectionParamsResponse>, Status> {
99 query_connection_params(&self.ibc_context, &request.into_domain())?.into_response()
100 }
101}