cuprated/rpc/
bin.rs

1use anyhow::Error;
2
3use cuprate_rpc_types::{
4    bin::{
5        BinRequest, BinResponse, GetBlocksByHeightRequest, GetBlocksByHeightResponse,
6        GetBlocksRequest, GetBlocksResponse, GetHashesRequest, GetHashesResponse,
7        GetOutputIndexesRequest, GetOutputIndexesResponse, GetOutsRequest, GetOutsResponse,
8        GetTransactionPoolHashesRequest, GetTransactionPoolHashesResponse,
9    },
10    json::{GetOutputDistributionRequest, GetOutputDistributionResponse},
11};
12
13use crate::rpc::CupratedRpcHandler;
14
15/// Map a [`BinRequest`] to the function that will lead to a [`BinResponse`].
16pub(super) async fn map_request(
17    state: CupratedRpcHandler,
18    request: BinRequest,
19) -> Result<BinResponse, Error> {
20    use BinRequest as Req;
21    use BinResponse as Resp;
22
23    Ok(match request {
24        Req::GetBlocks(r) => Resp::GetBlocks(get_blocks(state, r).await?),
25        Req::GetBlocksByHeight(r) => Resp::GetBlocksByHeight(get_blocks_by_height(state, r).await?),
26        Req::GetHashes(r) => Resp::GetHashes(get_hashes(state, r).await?),
27        Req::GetOutputIndexes(r) => Resp::GetOutputIndexes(get_output_indexes(state, r).await?),
28        Req::GetOuts(r) => Resp::GetOuts(get_outs(state, r).await?),
29        Req::GetTransactionPoolHashes(r) => {
30            Resp::GetTransactionPoolHashes(get_transaction_pool_hashes(state, r).await?)
31        }
32        Req::GetOutputDistribution(r) => {
33            Resp::GetOutputDistribution(get_output_distribution(state, r).await?)
34        }
35    })
36}
37
38async fn get_blocks(
39    state: CupratedRpcHandler,
40    request: GetBlocksRequest,
41) -> Result<GetBlocksResponse, Error> {
42    todo!()
43}
44
45async fn get_blocks_by_height(
46    state: CupratedRpcHandler,
47    request: GetBlocksByHeightRequest,
48) -> Result<GetBlocksByHeightResponse, Error> {
49    todo!()
50}
51
52async fn get_hashes(
53    state: CupratedRpcHandler,
54    request: GetHashesRequest,
55) -> Result<GetHashesResponse, Error> {
56    todo!()
57}
58
59async fn get_output_indexes(
60    state: CupratedRpcHandler,
61    request: GetOutputIndexesRequest,
62) -> Result<GetOutputIndexesResponse, Error> {
63    todo!()
64}
65
66async fn get_outs(
67    state: CupratedRpcHandler,
68    request: GetOutsRequest,
69) -> Result<GetOutsResponse, Error> {
70    todo!()
71}
72
73async fn get_transaction_pool_hashes(
74    state: CupratedRpcHandler,
75    request: GetTransactionPoolHashesRequest,
76) -> Result<GetTransactionPoolHashesResponse, Error> {
77    todo!()
78}
79
80async fn get_output_distribution(
81    state: CupratedRpcHandler,
82    request: GetOutputDistributionRequest,
83) -> Result<GetOutputDistributionResponse, Error> {
84    todo!()
85}