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
15pub(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}