Skip to content

Commit 835873f

Browse files
committed
add load invoker method
1 parent 9cc8769 commit 835873f

File tree

1 file changed

+36
-0
lines changed

1 file changed

+36
-0
lines changed

dubbo/src/extension/mod.rs

+36
Original file line numberDiff line numberDiff line change
@@ -398,6 +398,42 @@ impl ExtensionDirectoryCommander {
398398
}
399399
}
400400
}
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+
}
401437
}
402438

403439
enum ExtensionOpt {

0 commit comments

Comments
 (0)