@@ -10,6 +10,7 @@ use anyhow::Result;
1010use jsonrpsee:: { proc_macros:: rpc, server:: ServerBuilder , server:: ServerHandle } ;
1111use lazy_static:: lazy_static;
1212use prometheus:: { register_counter, register_int_counter, Counter , IntCounter } ;
13+ // use tower::steer::Steer;
1314
1415use crate :: aggregator:: check_and_aggregate_receipts;
1516use crate :: api_versioning:: {
@@ -22,6 +23,10 @@ use tap_core::{
2223 rav:: ReceiptAggregateVoucher , receipt:: Receipt , signed_message:: EIP712SignedMessage ,
2324} ;
2425
26+ pub mod tap_aggregator {
27+ tonic:: include_proto!( "tap_aggregator.v1" ) ;
28+ }
29+
2530// Register the metrics into the global metrics registry.
2631lazy_static ! {
2732 static ref AGGREGATION_SUCCESS_COUNTER : IntCounter = register_int_counter!(
@@ -171,6 +176,45 @@ fn aggregate_receipts_(
171176 }
172177}
173178
179+ use tap_aggregator:: tap_aggregator_server:: TapAggregator ;
180+ use tap_aggregator:: {
181+ ApiVersionsRequest , RavRequest , RavResponse , SignedRav ,
182+ TapRpcApiVersionsInfo as TapGRpcApiVersionsInfo ,
183+ } ;
184+ use tonic:: { Request , Response , Status } ;
185+
186+ #[ tonic:: async_trait]
187+ impl TapAggregator for RpcImpl {
188+ async fn api_versions (
189+ & self ,
190+ _request : Request < ApiVersionsRequest > ,
191+ ) -> Result < Response < TapGRpcApiVersionsInfo > , Status > {
192+ // Example response
193+ let response = TapGRpcApiVersionsInfo {
194+ versions_deprecated : vec ! [ ] ,
195+ versions_supported : vec ! [ ] ,
196+ } ;
197+
198+ Ok ( Response :: new ( response) )
199+ }
200+
201+ async fn aggregate_receipts (
202+ & self ,
203+ request : Request < RavRequest > ,
204+ ) -> Result < Response < RavResponse > , Status > {
205+ let rav_request = request. into_inner ( ) ;
206+
207+ // Example implementation: create a dummy response
208+ let response = RavResponse {
209+ rav : Some ( SignedRav {
210+ message : None , // Fill this with your aggregate logic
211+ signature : vec ! [ ] ,
212+ } ) ,
213+ } ;
214+ Ok ( Response :: new ( response) )
215+ }
216+ }
217+
174218impl RpcServer for RpcImpl {
175219 fn api_versions ( & self ) -> JsonRpcResult < TapRpcApiVersionsInfo > {
176220 Ok ( JsonRpcResponse :: ok ( tap_rpc_api_versions_info ( ) ) )
@@ -208,6 +252,7 @@ impl RpcServer for RpcImpl {
208252 }
209253}
210254
255+ // TODO: create a gRPC alike run_server
211256pub async fn run_server (
212257 port : u16 ,
213258 wallet : PrivateKeySigner ,
0 commit comments