pub mod kind;
use std::sync::Arc;
use async_trait::async_trait;
use crate::error::Result;
use crate::rpc::Invoker;
use crate::url::Url;
#[async_trait]
pub trait RpcProtocol: Send + Sync {
type Invoker: Invoker;
async fn export(&self, invoker: Arc<Box<dyn Invoker>>) -> Result<()>;
async fn refer(&self, url: Url) -> Result<Arc<Self::Invoker>>;
}