File tree 1 file changed +36
-0
lines changed
1 file changed +36
-0
lines changed Original file line number Diff line number Diff line change @@ -398,6 +398,42 @@ impl ExtensionDirectoryCommander {
398
398
}
399
399
}
400
400
}
401
+
402
+ pub async fn load_invoker ( & self , url : Url ) -> Result < InvokerProxy , StdError > {
403
+ let url_str = url. to_string ( ) ;
404
+ info ! ( "load invoker extension: {}" , url_str) ;
405
+
406
+ let ( tx, rx) = oneshot:: channel ( ) ;
407
+
408
+ let send = self
409
+ . sender
410
+ . send ( ExtensionOpt :: Load ( url, ExtensionType :: Invoker , tx) )
411
+ . await ;
412
+
413
+ let Ok ( _) = send else {
414
+ let err_msg = format ! ( "load invoker extension failed: {}" , url_str) ;
415
+ return Err ( LoadExtensionError :: new ( err_msg) . into ( ) ) ;
416
+ } ;
417
+
418
+ let extensions = rx. await ;
419
+
420
+ let Ok ( extension) = extensions else {
421
+ let err_msg = format ! ( "load invoker extension failed: {}" , url_str) ;
422
+ return Err ( LoadExtensionError :: new ( err_msg) . into ( ) ) ;
423
+ } ;
424
+
425
+ let Ok ( extensions) = extension else {
426
+ let err_msg = format ! ( "load invoker extension failed: {}" , url_str) ;
427
+ return Err ( LoadExtensionError :: new ( err_msg) . into ( ) ) ;
428
+ } ;
429
+
430
+ match extensions {
431
+ Extensions :: Invoker ( proxy) => Ok ( proxy) ,
432
+ _ => {
433
+ panic ! ( "load invoker extension failed: invalid extension type" ) ;
434
+ }
435
+ }
436
+ }
401
437
}
402
438
403
439
enum ExtensionOpt {
You can’t perform that action at this time.
0 commit comments