Skip to content

Commit

Permalink
fix: rings jsonrpc client (#513)
Browse files Browse the repository at this point in the history
* Fix rings cmd helper

* Fix rings jsonrpc client

* Fix CI

* connect_peer_via_http in provider should use request

* Update CI of ffi

* The offer is already encoded

* Update comment

* Bump version
  • Loading branch information
Ma233 authored Jan 3, 2024
1 parent ccfe2cf commit 476255d
Show file tree
Hide file tree
Showing 32 changed files with 432 additions and 854 deletions.
2 changes: 1 addition & 1 deletion .github/workflows/qaci.yml
Original file line number Diff line number Diff line change
Expand Up @@ -118,7 +118,7 @@ jobs:
run: cargo clippy -p rings-node --features ffi

- name: Build
run: cargo build -p rings-node --features ffi && ls target/include && ls target/debug
run: cargo build -p rings-node --features ffi

- uses: actions/setup-python@v4
with:
Expand Down
18 changes: 1 addition & 17 deletions Cargo.lock

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

3 changes: 2 additions & 1 deletion Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -3,14 +3,15 @@ resolver = "2"
members = ["core", "transport", "node", "rpc", "derive"]

[workspace.package]
version = "0.5.1"
version = "0.5.2"
edition = "2021"
license = "GPL-3.0"
authors = ["RND <[email protected]>"]
repository = "https://github.com/RingsNetwork/rings-node"

[workspace.dependencies]
js-sys = "0.3.64"
jsonrpc-core = "18.0.0"
rings-core = { path = "core", default-features = false }
rings-derive = { path = "derive", default-features = false }
rings-rpc = { path = "rpc", default-features = false }
Expand Down
1 change: 1 addition & 0 deletions node/Cargo.toml
Original file line number Diff line number Diff line change
Expand Up @@ -77,6 +77,7 @@ dotenv = "0.15.0"
futures = { version = "0.3.21", features = ["alloc"] }
futures-timer = "3.0.2"
http = "0.2.6"
jsonrpc-core = { workspace = true }
log = { version = "0.4", features = ["std"] }
rings-core = { workspace = true, optional = true }
rings-derive = { workspace = true, optional = true }
Expand Down
8 changes: 3 additions & 5 deletions node/bin/rings.rs
Original file line number Diff line number Diff line change
Expand Up @@ -105,7 +105,7 @@ struct NewSessionCommand {
struct RunCommand {
#[arg(
long,
help = "Rings node external api listen address. If not provided, use bind_addr in config file or 127.0.0.1:50001",
help = "Rings node external api listen address. If not provided, use external_api_addr in config file or 127.0.0.1:50001",
env
)]
pub external_api_addr: Option<String>,
Expand Down Expand Up @@ -184,11 +184,9 @@ struct ClientArgs {

impl ClientArgs {
async fn new_client(&self) -> anyhow::Result<Client> {
let c = config::Config::read_fs(self.config_args.config.as_str())?;
let process_config: ProcessorConfig = c.clone().try_into()?;
let c = config::Config::read_fs(&self.config_args.config)?;
let endpoint_url = self.endpoint_url.as_ref().unwrap_or(&c.endpoint_url);
let session_sk = process_config.session_sk();
Client::new(endpoint_url.as_str(), session_sk)
Client::new(endpoint_url)
}
}

Expand Down
4 changes: 2 additions & 2 deletions node/src/backend/native/service/mod.rs
Original file line number Diff line number Diff line change
Expand Up @@ -97,7 +97,7 @@ impl MessageHandler<ServiceMessage> for ServiceProvider {
reason: e,
};
let backend_message: BackendMessage = msg.into();
let params = backend_message.to_request_params(peer_did)?;
let params = backend_message.into_send_backend_message_request(peer_did)?;
provider.request(Method::SendBackendMessage, params).await?;
Err(Error::TunnelError(e))
}
Expand Down Expand Up @@ -128,7 +128,7 @@ impl MessageHandler<ServiceMessage> for ServiceProvider {
let service = self.service(&req.service).ok_or(Error::InvalidService)?;
let resp = handle_http_request(service.addr, req).await?;
let backend_message: BackendMessage = ServiceMessage::HttpResponse(resp).into();
let params = backend_message.to_request_params(peer_did)?;
let params = backend_message.into_send_backend_message_request(peer_did)?;
let resp = provider.request(Method::SendBackendMessage, params).await?;
tracing::info!("done calling provider {:?}", resp);
Ok(())
Expand Down
8 changes: 5 additions & 3 deletions node/src/backend/native/service/tcp_proxy.rs
Original file line number Diff line number Diff line change
Expand Up @@ -142,7 +142,9 @@ impl TunnelListener {
};

let backend_message: BackendMessage = msg.into();
let params = backend_message.to_request_params(self.peer_did).unwrap();
let params = backend_message
.into_send_backend_message_request(self.peer_did)
.unwrap();
if let Err(e) = provider.request(Method::SendBackendMessage, params).await {
tracing::error!("Send TcpPackage message failed: {e:?}");
break TunnelDefeat::WebrtcDatachannelSendFailed;
Expand Down Expand Up @@ -176,7 +178,7 @@ impl TunnelListener {
};

let backend_message: BackendMessage = msg.into();
let params = backend_message.to_request_params(self.peer_did).unwrap();
let params = backend_message.into_send_backend_message_request(self.peer_did).unwrap();
if let Err(e) = provider.request(Method::SendBackendMessage, params).await {
tracing::error!("Send TcpClose message failed: {e:?}");
}
Expand All @@ -189,7 +191,7 @@ impl TunnelListener {
};

let backend_message: BackendMessage = msg.into();
let params = backend_message.to_request_params(self.peer_did).unwrap();
let params = backend_message.into_send_backend_message_request(self.peer_did).unwrap();
let _ = provider.request(Method::SendBackendMessage, params).await;
}
}
Expand Down
8 changes: 5 additions & 3 deletions node/src/backend/types.rs
Original file line number Diff line number Diff line change
Expand Up @@ -5,7 +5,6 @@ use std::io::ErrorKind as IOErrorKind;
use std::sync::Arc;

use bytes::Bytes;
use rings_core::dht::Did;
use rings_core::message::MessagePayload;
use rings_rpc::protos::rings_node::SendBackendMessageRequest;
use serde::Deserialize;
Expand Down Expand Up @@ -145,10 +144,13 @@ impl From<IOErrorKind> for TunnelDefeat {

impl BackendMessage {
/// Convert to SendBackendMessageRequest
pub fn to_request_params(&self, destination_did: Did) -> Result<SendBackendMessageRequest> {
pub fn into_send_backend_message_request(
self,
destination_did: impl ToString,
) -> Result<SendBackendMessageRequest> {
Ok(SendBackendMessageRequest {
destination_did: destination_did.to_string(),
data: serde_json::to_string(self)?,
data: serde_json::to_string(&self)?,
})
}
}
5 changes: 2 additions & 3 deletions node/src/error.rs
Original file line number Diff line number Diff line change
@@ -1,6 +1,5 @@
//! A bunch of wrap errors.
use crate::backend::types::TunnelDefeat;
use crate::prelude::jsonrpc_core;
use crate::prelude::rings_core;

/// A wrap `Result` contains custom errors.
Expand Down Expand Up @@ -152,8 +151,8 @@ impl From<Error> for jsonrpc_core::Error {
}
}

impl From<crate::prelude::rings_rpc::error::Error> for Error {
fn from(e: crate::prelude::rings_rpc::error::Error) -> Self {
impl From<rings_rpc::error::Error> for Error {
fn from(e: rings_rpc::error::Error) -> Self {
match e {
rings_rpc::error::Error::DecodeError => Error::DecodeError,
rings_rpc::error::Error::EncodeError => Error::EncodeError,
Expand Down
Loading

0 comments on commit 476255d

Please sign in to comment.