1212//!
1313//! You can also [`connect`](Store::connect) to a remote store that is listening
1414//! to rpc requests.
15- use std:: { io, net:: SocketAddr , ops:: Deref , sync :: Arc } ;
15+ use std:: { io, net:: SocketAddr , ops:: Deref } ;
1616
1717use bao_tree:: io:: EncodeError ;
1818use iroh:: Endpoint ;
19- use irpc:: rpc:: { listen, Handler } ;
19+ use irpc:: rpc:: { listen, RemoteService } ;
2020use n0_snafu:: SpanTrace ;
2121use nested_enum_utils:: common_fields;
22- use proto:: { BlobsApi , ShutdownRequest , SyncDbRequest } ;
22+ use proto:: { Request , ShutdownRequest , SyncDbRequest } ;
2323use ref_cast:: RefCast ;
2424use serde:: { Deserialize , Serialize } ;
2525use snafu:: { Backtrace , IntoError , Snafu } ;
@@ -32,7 +32,7 @@ pub mod remote;
3232pub mod tags;
3333pub use crate :: { store:: util:: Tag , util:: temp_tag:: TempTag } ;
3434
35- pub ( crate ) type ApiClient = irpc:: Client < proto:: BlobsApi > ;
35+ pub ( crate ) type ApiClient = irpc:: Client < proto:: Request > ;
3636
3737#[ common_fields( {
3838 backtrace: Option <Backtrace >,
@@ -282,42 +282,8 @@ impl Store {
282282 /// Listen on a quinn endpoint for incoming rpc connections.
283283 pub async fn listen ( self , endpoint : quinn:: Endpoint ) {
284284 let local = self . client . as_local ( ) . unwrap ( ) . clone ( ) ;
285- let handler: Handler < BlobsApi > = Arc :: new ( move |req, rx, tx| {
286- let local = local. clone ( ) ;
287- Box :: pin ( {
288- match req {
289- BlobsApi :: SetTag ( msg) => local. send ( ( msg, tx) ) ,
290- BlobsApi :: CreateTag ( msg) => local. send ( ( msg, tx) ) ,
291- BlobsApi :: DeleteTags ( msg) => local. send ( ( msg, tx) ) ,
292- BlobsApi :: RenameTag ( msg) => local. send ( ( msg, tx) ) ,
293- BlobsApi :: ListTags ( msg) => local. send ( ( msg, tx) ) ,
294-
295- BlobsApi :: ListTempTags ( msg) => local. send ( ( msg, tx) ) ,
296- BlobsApi :: CreateTempTag ( msg) => local. send ( ( msg, tx) ) ,
297-
298- BlobsApi :: BlobStatus ( msg) => local. send ( ( msg, tx) ) ,
299-
300- BlobsApi :: ImportBytes ( msg) => local. send ( ( msg, tx) ) ,
301- BlobsApi :: ImportByteStream ( msg) => local. send ( ( msg, tx, rx) ) ,
302- BlobsApi :: ImportBao ( msg) => local. send ( ( msg, tx, rx) ) ,
303- BlobsApi :: ImportPath ( msg) => local. send ( ( msg, tx) ) ,
304- BlobsApi :: ListBlobs ( msg) => local. send ( ( msg, tx) ) ,
305- BlobsApi :: DeleteBlobs ( msg) => local. send ( ( msg, tx) ) ,
306- BlobsApi :: Batch ( msg) => local. send ( ( msg, tx, rx) ) ,
307-
308- BlobsApi :: ExportBao ( msg) => local. send ( ( msg, tx) ) ,
309- BlobsApi :: ExportRanges ( msg) => local. send ( ( msg, tx) ) ,
310- BlobsApi :: ExportPath ( msg) => local. send ( ( msg, tx) ) ,
311-
312- BlobsApi :: Observe ( msg) => local. send ( ( msg, tx) ) ,
313-
314- BlobsApi :: ClearProtected ( msg) => local. send ( ( msg, tx) ) ,
315- BlobsApi :: SyncDb ( msg) => local. send ( ( msg, tx) ) ,
316- BlobsApi :: Shutdown ( msg) => local. send ( ( msg, tx) ) ,
317- }
318- } )
319- } ) ;
320- listen :: < BlobsApi > ( endpoint, handler) . await
285+ let handler = Request :: remote_handler ( local) ;
286+ listen :: < Request > ( endpoint, handler) . await
321287 }
322288
323289 pub async fn sync_db ( & self ) -> RequestResult < ( ) > {
0 commit comments