12
12
//!
13
13
//! You can also [`connect`](Store::connect) to a remote store that is listening
14
14
//! to rpc requests.
15
- use std:: { io, net:: SocketAddr , ops:: Deref , sync :: Arc } ;
15
+ use std:: { io, net:: SocketAddr , ops:: Deref } ;
16
16
17
17
use bao_tree:: io:: EncodeError ;
18
18
use iroh:: Endpoint ;
19
- use irpc:: rpc:: { listen, Handler } ;
19
+ use irpc:: rpc:: { listen, RemoteService } ;
20
20
use n0_snafu:: SpanTrace ;
21
21
use nested_enum_utils:: common_fields;
22
- use proto:: { BlobsApi , ShutdownRequest , SyncDbRequest } ;
22
+ use proto:: { Request , ShutdownRequest , SyncDbRequest } ;
23
23
use ref_cast:: RefCast ;
24
24
use serde:: { Deserialize , Serialize } ;
25
25
use snafu:: { Backtrace , IntoError , Snafu } ;
@@ -32,7 +32,7 @@ pub mod remote;
32
32
pub mod tags;
33
33
pub use crate :: { store:: util:: Tag , util:: temp_tag:: TempTag } ;
34
34
35
- pub ( crate ) type ApiClient = irpc:: Client < proto:: BlobsApi > ;
35
+ pub ( crate ) type ApiClient = irpc:: Client < proto:: Request > ;
36
36
37
37
#[ common_fields( {
38
38
backtrace: Option <Backtrace >,
@@ -282,42 +282,8 @@ impl Store {
282
282
/// Listen on a quinn endpoint for incoming rpc connections.
283
283
pub async fn listen ( self , endpoint : quinn:: Endpoint ) {
284
284
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
321
287
}
322
288
323
289
pub async fn sync_db ( & self ) -> RequestResult < ( ) > {
0 commit comments