sui_rpc_api/grpc/v2alpha/ledger_service/
mod.rs

1// Copyright (c) Mysten Labs, Inc.
2// SPDX-License-Identifier: Apache-2.0
3
4use sui_rpc::proto::sui::rpc::v2alpha::ListCheckpointsRequest;
5use sui_rpc::proto::sui::rpc::v2alpha::ListCheckpointsResponse;
6use sui_rpc::proto::sui::rpc::v2alpha::ListEventsRequest;
7use sui_rpc::proto::sui::rpc::v2alpha::ListEventsResponse;
8use sui_rpc::proto::sui::rpc::v2alpha::ListTransactionsRequest;
9use sui_rpc::proto::sui::rpc::v2alpha::ListTransactionsResponse;
10use sui_rpc::proto::sui::rpc::v2alpha::ledger_service_server::LedgerService;
11use tonic::codegen::BoxStream;
12
13use crate::RpcService;
14
15mod bitmap_scan;
16mod chunked_scan;
17mod ledger_read;
18mod list_checkpoints;
19mod list_events;
20mod list_transactions;
21mod query_end;
22mod stream;
23
24use stream::serve_list_stream;
25
26#[tonic::async_trait]
27impl LedgerService for RpcService {
28    async fn list_checkpoints(
29        &self,
30        request: tonic::Request<ListCheckpointsRequest>,
31    ) -> Result<tonic::Response<BoxStream<ListCheckpointsResponse>>, tonic::Status> {
32        serve_list_stream(
33            "list_checkpoints",
34            self.config.ledger_history().list_checkpoints().timeout,
35            list_checkpoints::list_checkpoints(self.clone(), request.into_inner()),
36        )
37        .await
38    }
39
40    async fn list_transactions(
41        &self,
42        request: tonic::Request<ListTransactionsRequest>,
43    ) -> Result<tonic::Response<BoxStream<ListTransactionsResponse>>, tonic::Status> {
44        serve_list_stream(
45            "list_transactions",
46            self.config.ledger_history().list_transactions().timeout,
47            list_transactions::list_transactions(self.clone(), request.into_inner()),
48        )
49        .await
50    }
51
52    async fn list_events(
53        &self,
54        request: tonic::Request<ListEventsRequest>,
55    ) -> Result<tonic::Response<BoxStream<ListEventsResponse>>, tonic::Status> {
56        serve_list_stream(
57            "list_events",
58            self.config.ledger_history().list_events().timeout,
59            list_events::list_events(self.clone(), request.into_inner()),
60        )
61        .await
62    }
63}