Skip to content

Commit 0cd69ba

Browse files
authored
refactor: use thiserror & anyhow as error struct (#20)
Fix #18
1 parent 8e79980 commit 0cd69ba

File tree

25 files changed

+142
-155
lines changed

25 files changed

+142
-155
lines changed

examples/proxy.rs

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,11 @@ extern crate log;
44
use futures::executor::block_on;
55
use rsocket_rust::prelude::*;
66
use rsocket_rust_transport_tcp::*;
7-
use std::error::Error;
7+
8+
type Result<T> = rsocket_rust::Result<T>;
89

910
#[tokio::main]
10-
async fn main() -> Result<(), Box<dyn Error + Send + Sync>> {
11+
async fn main() -> Result<()> {
1112
env_logger::builder().format_timestamp_millis().init();
1213

1314
RSocketFactory::receive()

justfile

Lines changed: 6 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -2,12 +2,14 @@ alias b := bench
22
alias e := echo
33

44
build:
5-
@cargo build
5+
@cargo build
66
test:
7-
@cargo test -- --nocapture
7+
@cargo test -- --nocapture
88
lint:
9-
@cargo clippy
9+
@cargo clippy
10+
fmt:
11+
@cargo fmt
1012
echo:
11-
@RUST_LOG=release cargo run --release --example echo -- serve tcp://127.0.0.1:7878
13+
@RUST_LOG=release cargo run --release --example echo -- serve tcp://127.0.0.1:7878
1214
bench:
1315
@RUST_LOG=info cargo run --release --example qps -- -c 1000000 -s 1024 tcp://127.0.0.1:7878

rsocket-messaging/src/misc.rs

Lines changed: 9 additions & 9 deletions
Original file line numberDiff line numberDiff line change
@@ -1,13 +1,13 @@
1+
use rsocket_rust::Result;
12
use serde::{de::DeserializeOwned, Serialize};
2-
use std::error::Error;
33

44
pub trait SerDe {
5-
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>, Box<dyn Error + Send + Sync>>
5+
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>>
66
where
77
Self: Sized,
88
T: Sized + Serialize;
99

10-
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T, Box<dyn Error + Send + Sync>>
10+
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T>
1111
where
1212
Self: Sized,
1313
T: Sized + DeserializeOwned;
@@ -17,14 +17,14 @@ pub trait SerDe {
1717
struct JsonSerDe {}
1818

1919
impl SerDe for JsonSerDe {
20-
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>, Box<dyn Error + Send + Sync>>
20+
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>>
2121
where
2222
T: Sized + Serialize,
2323
{
2424
Ok(serde_json::to_vec(data)?)
2525
}
2626

27-
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T, Box<dyn Error + Send + Sync>>
27+
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T>
2828
where
2929
T: Sized + DeserializeOwned,
3030
{
@@ -43,29 +43,29 @@ pub fn cbor() -> impl SerDe {
4343
struct CborSerDe {}
4444

4545
impl SerDe for CborSerDe {
46-
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>, Box<dyn Error + Send + Sync>>
46+
fn marshal<T>(&self, data: &T) -> Result<Vec<u8>>
4747
where
4848
T: Sized + Serialize,
4949
{
5050
Ok(serde_cbor::to_vec(data)?)
5151
}
5252

53-
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T, Box<dyn Error + Send + Sync>>
53+
fn unmarshal<T>(&self, raw: &[u8]) -> Result<T>
5454
where
5555
T: Sized + DeserializeOwned,
5656
{
5757
Ok(serde_cbor::from_slice(raw)?)
5858
}
5959
}
6060

61-
pub(crate) fn marshal<T>(ser: impl SerDe, data: &T) -> Result<Vec<u8>, Box<dyn Error + Send + Sync>>
61+
pub(crate) fn marshal<T>(ser: impl SerDe, data: &T) -> Result<Vec<u8>>
6262
where
6363
T: Sized + Serialize,
6464
{
6565
ser.marshal(data)
6666
}
6767

68-
pub(crate) fn unmarshal<T>(de: impl SerDe, raw: &[u8]) -> Result<T, Box<dyn Error + Send + Sync>>
68+
pub(crate) fn unmarshal<T>(de: impl SerDe, raw: &[u8]) -> Result<T>
6969
where
7070
T: Sized + DeserializeOwned,
7171
{

rsocket-messaging/src/requester.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -3,7 +3,7 @@ use bytes::{Bytes, BytesMut};
33
use rsocket_rust::extension::{CompositeMetadata, MimeType, RoutingMetadata};
44
use rsocket_rust::prelude::*;
55
use rsocket_rust::utils::Writeable;
6-
use rsocket_rust::Result;
6+
use rsocket_rust::{error::RSocketError, Result};
77
use rsocket_rust_transport_tcp::TcpClientTransport;
88
use rsocket_rust_transport_websocket::WebsocketClientTransport;
99
use serde::{de::DeserializeOwned, Serialize};
@@ -176,7 +176,7 @@ impl RequesterBuilder {
176176
let requester = Requester::from(rsocket);
177177
Ok(requester)
178178
}
179-
None => Err("Missing transport!".into()),
179+
None => Err(RSocketError::WithDescription("Missing transport!".into()).into()),
180180
}
181181
}
182182
}
@@ -368,7 +368,7 @@ where
368368
match *mime_type {
369369
MimeType::APPLICATION_JSON => Ok(Some(unmarshal(misc::json(), &raw.as_ref())?)),
370370
MimeType::APPLICATION_CBOR => Ok(Some(unmarshal(misc::cbor(), &raw.as_ref())?)),
371-
_ => Err("unsupported mime type!".into()),
371+
_ => Err(RSocketError::WithDescription("unsupported mime type!".into()).into()),
372372
}
373373
}
374374

@@ -380,6 +380,6 @@ where
380380
match *mime_type {
381381
MimeType::APPLICATION_JSON => marshal(misc::json(), data),
382382
MimeType::APPLICATION_CBOR => marshal(misc::cbor(), data),
383-
_ => Err("unsupported mime type!".into()),
383+
_ => Err(RSocketError::WithDescription("unsupported mime type!".into()).into()),
384384
}
385385
}

rsocket-transport-tcp/src/client/tcp.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{connection::TcpConnection, misc::parse_tcp_addr};
22
use async_trait::async_trait;
3-
use rsocket_rust::{transport::Transport, Result};
3+
use rsocket_rust::{error::RSocketError, transport::Transport, Result};
44
use std::net::SocketAddr;
55
use tokio::net::TcpStream;
66

@@ -24,7 +24,7 @@ impl Transport for TcpClientTransport {
2424
Connector::Direct(socket) => Ok(TcpConnection::from(socket)),
2525
Connector::Lazy(addr) => match TcpStream::connect(addr).await {
2626
Ok(stream) => Ok(TcpConnection::from(stream)),
27-
Err(e) => Err(Box::new(e)),
27+
Err(e) => Err(RSocketError::IO(e).into()),
2828
},
2929
}
3030
}

rsocket-transport-tcp/src/client/uds.rs

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::connection::UnixConnection;
22
use crate::misc::parse_uds_addr;
33
use async_trait::async_trait;
4-
use rsocket_rust::{transport::Transport, Result};
4+
use rsocket_rust::{error::RSocketError, transport::Transport, Result};
55
use tokio::net::UnixStream;
66

77
#[derive(Debug)]
@@ -24,7 +24,7 @@ impl Transport for UnixClientTransport {
2424
Connector::Direct(socket) => Ok(UnixConnection::from(socket)),
2525
Connector::Lazy(addr) => match UnixStream::connect(addr).await {
2626
Ok(stream) => Ok(UnixConnection::from(stream)),
27-
Err(e) => Err(Box::new(e)),
27+
Err(e) => Err(RSocketError::IO(e).into()),
2828
},
2929
}
3030
}

rsocket-transport-tcp/src/connection/tcp.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use futures::stream::{SplitSink, SplitStream};
44
use futures::{SinkExt, StreamExt};
55
use rsocket_rust::frame::Frame;
66
use rsocket_rust::transport::{Connection, Reader, Writer};
7-
use rsocket_rust::Result;
7+
use rsocket_rust::{error::RSocketError, Result};
88
use tokio::net::TcpStream;
99
use tokio_util::codec::Framed;
1010

@@ -26,7 +26,7 @@ impl Writer for InnerWriter {
2626
async fn write(&mut self, frame: Frame) -> Result<()> {
2727
match self.sink.send(frame).await {
2828
Ok(()) => Ok(()),
29-
Err(e) => Err(Box::new(e)),
29+
Err(e) => Err(RSocketError::IO(e).into()),
3030
}
3131
}
3232
}
@@ -36,7 +36,7 @@ impl Reader for InnerReader {
3636
async fn read(&mut self) -> Option<Result<Frame>> {
3737
match self.stream.next().await {
3838
Some(Ok(frame)) => Some(Ok(frame)),
39-
Some(Err(e)) => Some(Err(Box::new(e))),
39+
Some(Err(e)) => Some(Err(RSocketError::IO(e).into())),
4040
None => None,
4141
}
4242
}

rsocket-transport-tcp/src/connection/uds.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,7 +4,7 @@ use futures::stream::{SplitSink, SplitStream};
44
use futures::{SinkExt, StreamExt};
55
use rsocket_rust::frame::Frame;
66
use rsocket_rust::transport::{Connection, Reader, Writer};
7-
use rsocket_rust::Result;
7+
use rsocket_rust::{error::RSocketError, Result};
88
use tokio::net::UnixStream;
99
use tokio_util::codec::Framed;
1010

@@ -41,7 +41,7 @@ impl Writer for InnerWriter {
4141
async fn write(&mut self, frame: Frame) -> Result<()> {
4242
match self.sink.send(frame).await {
4343
Ok(()) => Ok(()),
44-
Err(e) => Err(Box::new(e)),
44+
Err(e) => Err(RSocketError::IO(e).into()),
4545
}
4646
}
4747
}
@@ -51,7 +51,7 @@ impl Reader for InnerReader {
5151
async fn read(&mut self) -> Option<Result<Frame>> {
5252
match self.stream.next().await {
5353
Some(Ok(frame)) => Some(Ok(frame)),
54-
Some(Err(e)) => Some(Err(Box::new(e))),
54+
Some(Err(e)) => Some(Err(RSocketError::IO(e).into())),
5555
None => None,
5656
}
5757
}

rsocket-transport-tcp/src/server/tcp.rs

Lines changed: 4 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1,6 +1,6 @@
11
use crate::{client::TcpClientTransport, misc::parse_tcp_addr};
22
use async_trait::async_trait;
3-
use rsocket_rust::{transport::ServerTransport, Result};
3+
use rsocket_rust::{error::RSocketError, transport::ServerTransport, Result};
44
use std::net::SocketAddr;
55
use tokio::net::TcpListener;
66

@@ -33,7 +33,7 @@ impl ServerTransport for TcpServerTransport {
3333
debug!("listening on: {}", &self.addr);
3434
Ok(())
3535
}
36-
Err(e) => Err(Box::new(e)),
36+
Err(e) => Err(RSocketError::IO(e).into()),
3737
}
3838
}
3939

@@ -44,9 +44,9 @@ impl ServerTransport for TcpServerTransport {
4444
let tp = TcpClientTransport::from(socket);
4545
Some(Ok(tp))
4646
}
47-
Err(e) => Some(Err(Box::new(e))),
47+
Err(e) => Some(Err(RSocketError::IO(e).into())),
4848
},
49-
None => Some(Err("err".into())),
49+
None => None,
5050
}
5151
}
5252
}

rsocket-transport-tcp/src/server/uds.rs

Lines changed: 3 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
use crate::client::UnixClientTransport;
22
use crate::misc::parse_uds_addr;
33
use async_trait::async_trait;
4-
use rsocket_rust::{transport::ServerTransport, Result};
4+
use rsocket_rust::{error::RSocketError, transport::ServerTransport, Result};
55
use tokio::net::UnixListener;
66

77
#[derive(Debug)]
@@ -33,15 +33,15 @@ impl ServerTransport for UnixServerTransport {
3333
debug!("listening on: {}", &self.addr);
3434
Ok(())
3535
}
36-
Err(e) => Err(Box::new(e)),
36+
Err(e) => Err(RSocketError::IO(e).into()),
3737
}
3838
}
3939

4040
async fn next(&mut self) -> Option<Result<Self::Item>> {
4141
match self.listener.as_mut() {
4242
Some(listener) => match listener.accept().await {
4343
Ok((socket, _)) => Some(Ok(UnixClientTransport::from(socket))),
44-
Err(e) => Some(Err(Box::new(e))),
44+
Err(e) => Some(Err(RSocketError::IO(e).into())),
4545
},
4646
None => None,
4747
}

0 commit comments

Comments
 (0)