From fba4ee232b20044f001e3afa742fcc21ef33b355 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Wed, 10 Mar 2021 12:19:24 +0100 Subject: [PATCH 1/2] simplify errors on sending to front --- ws-client/src/client.rs | 39 +++++++++++++++------------------------ 1 file changed, 15 insertions(+), 24 deletions(-) diff --git a/ws-client/src/client.rs b/ws-client/src/client.rs index 3dc9f9a709..2fce7f52d0 100644 --- a/ws-client/src/client.rs +++ b/ws-client/src/client.rs @@ -24,7 +24,7 @@ // IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -use crate::jsonrpc_transport; +use crate::jsonrpc_transport::{self, Sender}; use crate::manager::{RequestManager, RequestStatus}; use async_trait::async_trait; use futures::{ @@ -373,16 +373,16 @@ fn process_response( match manager.request_status(&response_id) { RequestStatus::PendingMethodCall => { - let send_back_oneshot = manager.complete_pending_call(response_id).ok_or(Error::InvalidRequestId)?; + let send_back_oneshot = match manager.complete_pending_call(response_id) { + Some(Some(send)) => send, + Some(None) => return Ok(None), + None => return Err(Error::InvalidRequestId), + }; + manager.reclaim_request_id(response_id); let response = response.try_into().map_err(Error::Request); - match send_back_oneshot.map(|tx| tx.send(response)) { - Some(Err(Err(e))) => Err(e), - // ignore error on channel close - Some(Err(Ok(_))) => Ok(None), - Some(Ok(_)) => Ok(None), - None => Ok(None), - } + let _ = send_back_oneshot.send(response); + Ok(None) } RequestStatus::PendingSubscription => { let (send_back_oneshot, unsubscribe_method) = @@ -390,22 +390,16 @@ fn process_response( let json_sub_id: JsonValue = match response.try_into() { Ok(response) => response, Err(e) => { - return match send_back_oneshot.send(Err(Error::Request(e))) { - Err(Err(e)) => Err(e), - Err(Ok(_)) => unreachable!("Error sent above; qed"), - _ => Ok(None), - }; + let _ = send_back_oneshot.send(Err(Error::Request(e))); + return Ok(None); } }; let sub_id: SubscriptionId = match jsonrpc::from_value(json_sub_id.clone()) { Ok(sub_id) => sub_id, Err(_) => { - return match send_back_oneshot.send(Err(Error::InvalidSubscriptionId)) { - Err(Err(e)) => Err(e), - Err(Ok(_)) => unreachable!("Error sent above; qed"), - _ => Ok(None), - } + let _ = send_back_oneshot.send(Err(Error::InvalidSubscriptionId)); + return Ok(None); } }; @@ -422,11 +416,8 @@ fn process_response( } } } else { - match send_back_oneshot.send(Err(Error::InvalidSubscriptionId)) { - Err(Err(e)) => Err(e), - Err(Ok(_)) => unreachable!("Error sent above; qed"), - _ => Ok(None), - } + let _ = send_back_oneshot.send(Err(Error::InvalidSubscriptionId)); + Ok(None) } } RequestStatus::Subscription | RequestStatus::Invalid => Err(Error::InvalidRequestId), From 67c58e7f26414ee7e7bda3b134fd9588a195a2e0 Mon Sep 17 00:00:00 2001 From: Niklas Adolfsson Date: Wed, 10 Mar 2021 12:39:30 +0100 Subject: [PATCH 2/2] fix import nit --- ws-client/src/client.rs | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ws-client/src/client.rs b/ws-client/src/client.rs index 2fce7f52d0..f483eb16d5 100644 --- a/ws-client/src/client.rs +++ b/ws-client/src/client.rs @@ -24,7 +24,7 @@ // IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER // DEALINGS IN THE SOFTWARE. -use crate::jsonrpc_transport::{self, Sender}; +use crate::jsonrpc_transport; use crate::manager::{RequestManager, RequestStatus}; use async_trait::async_trait; use futures::{