Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

make Server::start infallible and add fn builder() #1137

Merged
merged 4 commits into from
May 28, 2023
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
4 changes: 2 additions & 2 deletions benches/helpers.rs
Original file line number Diff line number Diff line change
Expand Up @@ -125,7 +125,7 @@ pub async fn http_server(handle: tokio::runtime::Handle) -> (String, jsonrpsee::
let module = gen_rpc_module();

let addr = server.local_addr().unwrap();
let handle = server.start(module).unwrap();
let handle = server.start(module);
(format!("http://{}", addr), handle)
}

Expand Down Expand Up @@ -161,7 +161,7 @@ pub async fn ws_server(handle: tokio::runtime::Handle) -> (String, jsonrpsee::se
.unwrap();

let addr = format!("ws://{}", server.local_addr().unwrap());
let handle = server.start(module).unwrap();
let handle = server.start(module);
(addr, handle)
}

Expand Down
14 changes: 14 additions & 0 deletions client/http-client/src/client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -233,6 +233,13 @@ impl Default for HttpClientBuilder<Identity> {
}
}

impl HttpClientBuilder<Identity> {
/// Create a new builder.
pub fn new() -> HttpClientBuilder<Identity> {
HttpClientBuilder::default()
}
}

/// JSON-RPC HTTP Client that provides functionality to perform method calls and notifications.
#[derive(Debug, Clone)]
pub struct HttpClient<S = HttpBackend> {
Expand All @@ -244,6 +251,13 @@ pub struct HttpClient<S = HttpBackend> {
id_manager: Arc<RequestIdManager>,
}

impl<S> HttpClient<S> {
/// Create a builder for the HttpClient.
pub fn builder() -> HttpClientBuilder {
HttpClientBuilder::new()
}
}

#[async_trait]
impl<B, S> ClientT for HttpClient<S>
where
Expand Down
5 changes: 5 additions & 0 deletions client/wasm-client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -81,6 +81,11 @@ impl Default for WasmClientBuilder {
}

impl WasmClientBuilder {
/// Create a new WASM client builder.
pub fn new() -> WasmClientBuilder {
WasmClientBuilder::default()
}

/// See documentation [`ClientBuilder::request_timeout`] (default is 60 seconds).
pub fn request_timeout(mut self, timeout: Duration) -> Self {
self.request_timeout = timeout;
Expand Down
5 changes: 5 additions & 0 deletions client/ws-client/src/lib.rs
Original file line number Diff line number Diff line change
Expand Up @@ -109,6 +109,11 @@ impl Default for WsClientBuilder {
}

impl WsClientBuilder {
/// Create a new WebSocket client builder.
pub fn new() -> WsClientBuilder {
WsClientBuilder::default()
}

/// Force to use the rustls native certificate store.
///
/// Since multiple certificate stores can be optionally enabled, this option will
Expand Down
10 changes: 10 additions & 0 deletions core/src/client/async_client/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -92,6 +92,11 @@ impl Default for ClientBuilder {
}

impl ClientBuilder {
/// Create a builder for the client.
pub fn new() -> ClientBuilder {
ClientBuilder::default()
}

/// Set request timeout (default is 60 seconds).
pub fn request_timeout(mut self, timeout: Duration) -> Self {
self.request_timeout = timeout;
Expand Down Expand Up @@ -248,6 +253,11 @@ pub struct Client {
}

impl Client {
/// Create a builder for the server.
pub fn builder() -> ClientBuilder {
ClientBuilder::new()
}

/// Checks if the client is connected to the target.
pub fn is_connected(&self) -> bool {
!self.to_back.is_closed()
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/core_client.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use std::net::SocketAddr;
use jsonrpsee::client_transport::ws::{Uri, WsTransportClientBuilder};
use jsonrpsee::core::client::{Client, ClientBuilder, ClientT};
use jsonrpsee::rpc_params;
use jsonrpsee::server::{RpcModule, ServerBuilder};
use jsonrpsee::server::{RpcModule, Server};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
Expand All @@ -50,12 +50,12 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:0").await?;
let server = Server::builder().build("127.0.0.1:0").await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;
let addr = server.local_addr()?;

let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
7 changes: 3 additions & 4 deletions examples/examples/cors_server.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,11 +28,10 @@
//! with access control allowing requests from all hosts.

use hyper::Method;
use jsonrpsee::server::{AllowHosts, RpcModule, Server};
use std::net::SocketAddr;
use tower_http::cors::{Any, CorsLayer};

use jsonrpsee::server::{AllowHosts, RpcModule, ServerBuilder};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
tracing_subscriber::FmtSubscriber::builder()
Expand Down Expand Up @@ -86,7 +85,7 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
// modifying requests / responses. These features are independent of one another
// and can also be used separately.
// In this example, we use both features.
let server = ServerBuilder::default()
let server = Server::builder()
.set_host_filtering(AllowHosts::Any)
.set_middleware(middleware)
.build("127.0.0.1:0".parse::<SocketAddr>()?)
Expand All @@ -99,7 +98,7 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
})?;

let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/http.rs
Original file line number Diff line number Diff line change
Expand Up @@ -31,7 +31,7 @@ use hyper::body::Bytes;
use jsonrpsee::core::client::ClientT;
use jsonrpsee::http_client::HttpClientBuilder;
use jsonrpsee::rpc_params;
use jsonrpsee::server::{RpcModule, ServerBuilder};
use jsonrpsee::server::{RpcModule, Server};
use tower_http::trace::{DefaultMakeSpan, DefaultOnResponse, TraceLayer};
use tower_http::LatencyUnit;
use tracing_subscriber::util::SubscriberInitExt;
Expand Down Expand Up @@ -67,12 +67,12 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:0".parse::<SocketAddr>()?).await?;
let server = Server::builder().build("127.0.0.1:0".parse::<SocketAddr>()?).await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;

let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
7 changes: 3 additions & 4 deletions examples/examples/http_proxy_middleware.rs
Original file line number Diff line number Diff line change
Expand Up @@ -45,7 +45,7 @@ use jsonrpsee::core::client::ClientT;
use jsonrpsee::http_client::HttpClientBuilder;
use jsonrpsee::rpc_params;
use jsonrpsee::server::middleware::proxy_get_request::ProxyGetRequestLayer;
use jsonrpsee::server::{RpcModule, ServerBuilder};
use jsonrpsee::server::{RpcModule, Server};

#[tokio::main]
async fn main() -> anyhow::Result<()> {
Expand Down Expand Up @@ -87,16 +87,15 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
.layer(ProxyGetRequestLayer::new("/health", "system_health")?)
.timeout(Duration::from_secs(2));

let server =
ServerBuilder::new().set_middleware(service_builder).build("127.0.0.1:0".parse::<SocketAddr>()?).await?;
let server = Server::builder().set_middleware(service_builder).build("127.0.0.1:0".parse::<SocketAddr>()?).await?;

let addr = server.local_addr()?;

let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo").unwrap();
module.register_method("system_health", |_, _| serde_json::json!({ "health": true })).unwrap();

let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -29,7 +29,7 @@ use std::time::Instant;

use jsonrpsee::core::client::ClientT;
use jsonrpsee::server::logger::{self, HttpRequest, MethodKind, Params, TransportProtocol};
use jsonrpsee::server::ServerBuilder;
use jsonrpsee::server::Server;
use jsonrpsee::ws_client::WsClientBuilder;
use jsonrpsee::{rpc_params, RpcModule};

Expand Down Expand Up @@ -85,12 +85,12 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::new().set_logger(Timings).build("127.0.0.1:0").await?;
let server = Server::builder().set_logger(Timings).build("127.0.0.1:0").await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;
let addr = server.local_addr()?;

let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
7 changes: 3 additions & 4 deletions examples/examples/middleware.rs
Original file line number Diff line number Diff line change
Expand Up @@ -42,7 +42,7 @@ use tower_http::LatencyUnit;

use jsonrpsee::core::client::ClientT;
use jsonrpsee::http_client::HttpClientBuilder;
use jsonrpsee::server::{RpcModule, ServerBuilder};
use jsonrpsee::server::{RpcModule, Server};
use jsonrpsee::ws_client::WsClientBuilder;

#[tokio::main]
Expand Down Expand Up @@ -104,15 +104,14 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
.layer(cors)
.timeout(Duration::from_secs(2));

let server =
ServerBuilder::new().set_middleware(service_builder).build("127.0.0.1:0".parse::<SocketAddr>()?).await?;
let server = Server::builder().set_middleware(service_builder).build("127.0.0.1:0".parse::<SocketAddr>()?).await?;

let addr = server.local_addr()?;

let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo").unwrap();

let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/multi_logger.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use std::time::Instant;
use jsonrpsee::core::client::ClientT;
use jsonrpsee::rpc_params;
use jsonrpsee::server::logger::{HttpRequest, MethodKind, TransportProtocol};
use jsonrpsee::server::{logger, RpcModule, ServerBuilder};
use jsonrpsee::server::{logger, RpcModule, Server};
use jsonrpsee::types::Params;
use jsonrpsee::ws_client::WsClientBuilder;

Expand Down Expand Up @@ -142,7 +142,7 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::new().set_logger((Timings, ThreadWatcher)).build("127.0.0.1:0").await?;
let server = Server::builder().set_logger((Timings, ThreadWatcher)).build("127.0.0.1:0").await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;
module.register_method("thready", |params, _| {
Expand All @@ -153,7 +153,7 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
""
})?;
let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/proc_macro.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ use std::net::SocketAddr;

use jsonrpsee::core::{async_trait, client::Subscription, SubscriptionResult};
use jsonrpsee::proc_macros::rpc;
use jsonrpsee::server::{PendingSubscriptionSink, ServerBuilder, SubscriptionMessage};
use jsonrpsee::server::{PendingSubscriptionSink, Server, SubscriptionMessage};
use jsonrpsee::types::ErrorObjectOwned;
use jsonrpsee::ws_client::WsClientBuilder;

Expand Down Expand Up @@ -99,10 +99,10 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:0").await?;
let server = Server::builder().build("127.0.0.1:0").await?;

let addr = server.local_addr()?;
let handle = server.start(RpcServerImpl.into_rpc())?;
let handle = server.start(RpcServerImpl.into_rpc());

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/proc_macro_bounds.rs
Original file line number Diff line number Diff line change
Expand Up @@ -28,7 +28,7 @@ use std::net::SocketAddr;

use jsonrpsee::core::async_trait;
use jsonrpsee::proc_macros::rpc;
use jsonrpsee::server::ServerBuilder;
use jsonrpsee::server::Server;
use jsonrpsee::types::ErrorObjectOwned;
use jsonrpsee::ws_client::WsClientBuilder;

Expand Down Expand Up @@ -83,10 +83,10 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:0").await?;
let server = Server::builder().build("127.0.0.1:0").await?;

let addr = server.local_addr()?;
let handle = server.start(RpcServerImpl.into_rpc())?;
let handle = server.start(RpcServerImpl.into_rpc());

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/tokio_console.rs
Original file line number Diff line number Diff line change
Expand Up @@ -36,7 +36,7 @@

use std::net::SocketAddr;

use jsonrpsee::server::ServerBuilder;
use jsonrpsee::server::Server;
use jsonrpsee::RpcModule;

#[tokio::main]
Expand All @@ -49,7 +49,7 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:9944").await?;
let server = Server::builder().build("127.0.0.1:9944").await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;
module.register_method("memory_call", |_, _| "A".repeat(1024 * 1024))?;
Expand All @@ -59,7 +59,7 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
})?;

let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing a stopping the server so let it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/ws.rs
Original file line number Diff line number Diff line change
Expand Up @@ -27,7 +27,7 @@
use std::net::SocketAddr;

use jsonrpsee::core::client::ClientT;
use jsonrpsee::server::ServerBuilder;
use jsonrpsee::server::Server;
use jsonrpsee::ws_client::WsClientBuilder;
use jsonrpsee::{rpc_params, RpcModule};
use tracing_subscriber::util::SubscriberInitExt;
Expand All @@ -50,11 +50,11 @@ async fn main() -> anyhow::Result<()> {
}

async fn run_server() -> anyhow::Result<SocketAddr> {
let server = ServerBuilder::default().build("127.0.0.1:0").await?;
let server = Server::builder().build("127.0.0.1:0").await?;
let mut module = RpcModule::new(());
module.register_method("say_hello", |_, _| "lo")?;
let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
6 changes: 3 additions & 3 deletions examples/examples/ws_pubsub_broadcast.rs
Original file line number Diff line number Diff line change
Expand Up @@ -33,7 +33,7 @@ use futures::StreamExt;
use jsonrpsee::core::client::{Subscription, SubscriptionClientT};
use jsonrpsee::core::server::SubscriptionMessage;
use jsonrpsee::rpc_params;
use jsonrpsee::server::{RpcModule, ServerBuilder};
use jsonrpsee::server::{RpcModule, Server};
use jsonrpsee::ws_client::WsClientBuilder;
use jsonrpsee::PendingSubscriptionSink;
use tokio::sync::broadcast;
Expand Down Expand Up @@ -66,7 +66,7 @@ async fn main() -> anyhow::Result<()> {

async fn run_server() -> anyhow::Result<SocketAddr> {
// let's configure the server only hold 5 messages in memory.
let server = ServerBuilder::default().set_message_buffer_capacity(5).build("127.0.0.1:0").await?;
let server = Server::builder().set_message_buffer_capacity(5).build("127.0.0.1:0").await?;
let (tx, _rx) = broadcast::channel::<usize>(16);

let mut module = RpcModule::new(tx.clone());
Expand All @@ -82,7 +82,7 @@ async fn run_server() -> anyhow::Result<SocketAddr> {
})
.unwrap();
let addr = server.local_addr()?;
let handle = server.start(module)?;
let handle = server.start(module);

// In this example we don't care about doing shutdown so let's it run forever.
// You may use the `ServerHandle` to shut it down or manage it yourself.
Expand Down
Loading