From 0025d36880bfc7d7b8ddb69245e60638b4d2e0be Mon Sep 17 00:00:00 2001 From: Tyera Eulberg Date: Mon, 4 Feb 2019 17:41:03 -0700 Subject: [PATCH] Move solana proper back to paritytech/jsonrpc --- Cargo.lock | 157 +++++++++-------------------------------- Cargo.toml | 10 +-- src/lib.rs | 7 -- src/rpc.rs | 66 +++++++++-------- src/rpc_pubsub.rs | 101 ++++++++++++++------------ src/rpc_request.rs | 4 +- src/voting_keypair.rs | 2 +- vote-signer/src/rpc.rs | 2 +- 8 files changed, 134 insertions(+), 215 deletions(-) diff --git a/Cargo.lock b/Cargo.lock index ac7670b87..e6905399f 100644 --- a/Cargo.lock +++ b/Cargo.lock @@ -900,7 +900,7 @@ dependencies = [ "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.85 (registry+https://github.com/rust-lang/crates.io-index)", + "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", ] @@ -954,6 +954,20 @@ dependencies = [ "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", ] +[[package]] +name = "jsonrpc-ws-server" +version = "10.0.1" +source = "registry+https://github.com/rust-lang/crates.io-index" +dependencies = [ + "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "parity-ws 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", +] + [[package]] name = "kernel32-sys" version = "0.2.2" @@ -1277,12 +1291,20 @@ dependencies = [ ] [[package]] -name = "parking_lot" -version = "0.6.4" +name = "parity-ws" +version = "0.8.0" source = "registry+https://github.com/rust-lang/crates.io-index" dependencies = [ - "lock_api 0.1.5 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", + "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", + "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", + "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", + "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", + "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", + "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", + "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", + "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", + "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", ] [[package]] @@ -1294,18 +1316,6 @@ dependencies = [ "parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", ] -[[package]] -name = "parking_lot_core" -version = "0.3.1" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.5.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rustc_version 0.2.3 (registry+https://github.com/rust-lang/crates.io-index)", - "smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)", - "winapi 0.3.6 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "parking_lot_core" version = "0.4.0" @@ -1946,6 +1956,11 @@ dependencies = [ "hex-literal 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)", "indexmap 1.0.2 (registry+https://github.com/rust-lang/crates.io-index)", "itertools 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-core 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-derive 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", + "jsonrpc-ws-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)", "libc 0.2.48 (registry+https://github.com/rust-lang/crates.io-index)", "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", "matches 0.1.8 (registry+https://github.com/rust-lang/crates.io-index)", @@ -1960,11 +1975,6 @@ dependencies = [ "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", "solana-drone 0.12.0", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-http-server 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-macros 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-pubsub 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-ws-server 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", "solana-logger 0.12.0", "solana-metrics 0.12.0", "solana-native-loader 0.12.0", @@ -2103,81 +2113,6 @@ dependencies = [ "solana-sdk 0.12.0", ] -[[package]] -name = "solana-jsonrpc-core" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "futures 0.1.25 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_derive 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "serde_json 1.0.38 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "solana-jsonrpc-http-server" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "hyper 0.12.22 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "net2 0.2.33 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-server-utils 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "solana-jsonrpc-macros" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "serde 1.0.87 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-pubsub 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "solana-jsonrpc-pubsub" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "solana-jsonrpc-server-utils" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "globset 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "num_cpus 1.9.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio 0.1.15 (registry+https://github.com/rust-lang/crates.io-index)", - "tokio-codec 0.1.1 (registry+https://github.com/rust-lang/crates.io-index)", - "unicase 2.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - -[[package]] -name = "solana-jsonrpc-ws-server" -version = "0.4.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "error-chain 0.12.0 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-jsonrpc-server-utils 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)", - "solana-ws 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "solana-keygen" version = "0.12.0" @@ -2385,23 +2320,6 @@ dependencies = [ "solana-vote-signer 0.12.0", ] -[[package]] -name = "solana-ws" -version = "0.2.0" -source = "registry+https://github.com/rust-lang/crates.io-index" -dependencies = [ - "byteorder 1.3.1 (registry+https://github.com/rust-lang/crates.io-index)", - "bytes 0.4.11 (registry+https://github.com/rust-lang/crates.io-index)", - "httparse 1.3.3 (registry+https://github.com/rust-lang/crates.io-index)", - "log 0.4.6 (registry+https://github.com/rust-lang/crates.io-index)", - "mio 0.6.16 (registry+https://github.com/rust-lang/crates.io-index)", - "mio-extras 2.0.5 (registry+https://github.com/rust-lang/crates.io-index)", - "rand 0.4.5 (registry+https://github.com/rust-lang/crates.io-index)", - "sha1 0.6.0 (registry+https://github.com/rust-lang/crates.io-index)", - "slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)", - "url 1.7.2 (registry+https://github.com/rust-lang/crates.io-index)", -] - [[package]] name = "solana_rbpf" version = "0.1.9" @@ -3023,6 +2941,7 @@ dependencies = [ "checksum jsonrpc-http-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "99e1ce36c7cc9dcab398024d76849ab2cb917ee812653bce6f74fc9eb7c82d16" "checksum jsonrpc-pubsub 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "56608ed54b1b2a69f4357cb8bdfbcbd99fe1179383c03a09bb428931bd35f592" "checksum jsonrpc-server-utils 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "5521613b31ea22d36d9f95ad642058dccec846a94ed8690957652d479f620707" +"checksum jsonrpc-ws-server 10.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "20b8333a5a6e6ccbcf5c90f90919de557cba4929efa164e9bd0e8e497eb20e46" "checksum kernel32-sys 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "7507624b29483431c0ba2d82aece8ca6cdba9382bff4ddd0f7490560c056098d" "checksum language-tags 0.2.2 (registry+https://github.com/rust-lang/crates.io-index)" = "a91d884b6667cd606bb5a69aa0c99ba811a115fc68915e7056ec08a46e93199a" "checksum lazy_static 1.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a374c89b9db55895453a74c1e38861d9deec0b01b405a82516e9d5de4820dea1" @@ -3060,9 +2979,8 @@ dependencies = [ "checksum openssl-probe 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "77af24da69f9d9341038eba93a073b1fdaaa1b788221b00a69bce9e762cb32de" "checksum openssl-sys 0.9.40 (registry+https://github.com/rust-lang/crates.io-index)" = "1bb974e77de925ef426b6bc82fce15fd45bdcbeb5728bffcfc7cdeeb7ce1c2d6" "checksum owning_ref 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "49a4b8ea2179e6a2e27411d3bca09ca6dd630821cf6894c6c7c8467a8ee7ef13" -"checksum parking_lot 0.6.4 (registry+https://github.com/rust-lang/crates.io-index)" = "f0802bff09003b291ba756dc7e79313e51cc31667e94afbe847def490424cde5" +"checksum parity-ws 0.8.0 (registry+https://github.com/rust-lang/crates.io-index)" = "2fec5048fba72a2e01baeb0d08089db79aead4b57e2443df172fb1840075a233" "checksum parking_lot 0.7.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ab41b4aed082705d1056416ae4468b6ea99d52599ecf3169b00088d43113e337" -"checksum parking_lot_core 0.3.1 (registry+https://github.com/rust-lang/crates.io-index)" = "ad7f7e6ebdc79edff6fdcb87a55b620174f7a989e3eb31b65231f4af57f00b8c" "checksum parking_lot_core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "94c8c7923936b28d546dfd14d4472eaf34c99b14e1c973a32b3e6d4eb04298c9" "checksum peeking_take_while 0.1.2 (registry+https://github.com/rust-lang/crates.io-index)" = "19b17cddbe7ec3f8bc800887bab5e717348c95ea2ca0b1bf0837fb964dc67099" "checksum percent-encoding 1.0.1 (registry+https://github.com/rust-lang/crates.io-index)" = "31010dd2e1ac33d5b46a5b413495239882813e0369f8ed8a5e266f173602f831" @@ -3135,13 +3053,6 @@ dependencies = [ "checksum slab 0.4.2 (registry+https://github.com/rust-lang/crates.io-index)" = "c111b5bd5695e56cffe5129854aa230b39c93a305372fdbb2668ca2394eea9f8" "checksum smallvec 0.6.7 (registry+https://github.com/rust-lang/crates.io-index)" = "b73ea3738b47563803ef814925e69be00799a8c07420be8b996f8e98fb2336db" "checksum socket2 0.3.8 (registry+https://github.com/rust-lang/crates.io-index)" = "c4d11a52082057d87cb5caa31ad812f4504b97ab44732cd8359df2e9ff9f48e7" -"checksum solana-jsonrpc-core 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "3aef27e39614157ee2cc67296cba379b6209de8c82a3598f870f55577559979b" -"checksum solana-jsonrpc-http-server 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "e46cbb534bfac8c38e3e6e41133310819652b185367c8c530a63513aae8dbc6a" -"checksum solana-jsonrpc-macros 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "df31df489ec11f5fab95423dc58b581fdc8363ebee781c89aa50722437f7c9bb" -"checksum solana-jsonrpc-pubsub 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "a06b40e7885b7f8c21685e9dafe8c4da3276db20344eb4a50623f16e99853933" -"checksum solana-jsonrpc-server-utils 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "6acfebc12e709d8525f039e7135b922fb7efaf49cd536ad97bbedd0391dcf989" -"checksum solana-jsonrpc-ws-server 0.4.0 (registry+https://github.com/rust-lang/crates.io-index)" = "5a21f3c0cd97c2673854b1e4558cea4dba59fce27ec9f0e130f847da9e10355c" -"checksum solana-ws 0.2.0 (registry+https://github.com/rust-lang/crates.io-index)" = "de774a72a468e65a10791246f0335869a19bed7d85ba3c05381c4bb6247acb7f" "checksum solana_rbpf 0.1.9 (registry+https://github.com/rust-lang/crates.io-index)" = "0aa48e45529a335d2b016d9bacb41f2fb5b51bd2b36c224a4a9ae10f138c4a89" "checksum stable_deref_trait 1.1.1 (registry+https://github.com/rust-lang/crates.io-index)" = "dba1a27d3efae4351c8051072d619e3ade2820635c3958d826bfea39d59b54c8" "checksum string 0.1.3 (registry+https://github.com/rust-lang/crates.io-index)" = "b639411d0b9c738748b5397d5ceba08e648f4f1992231aa859af1a017f31f60b" diff --git a/Cargo.toml b/Cargo.toml index 47a6214ad..cffce63aa 100644 --- a/Cargo.toml +++ b/Cargo.toml @@ -33,6 +33,11 @@ fnv = "1.0.6" hashbrown = "0.1.8" indexmap = "1.0" itertools = "0.8.0" +jsonrpc-core = "10.0.1" +jsonrpc-derive = "10.0.1" +jsonrpc-http-server = "10.0.1" +jsonrpc-pubsub = "10.0.1" +jsonrpc-ws-server = "10.0.1" libc = "0.2.48" log = "0.4.2" nix = "0.13.0" @@ -46,11 +51,6 @@ serde = "1.0.87" serde_derive = "1.0.87" serde_json = "1.0.38" solana-drone = { path = "drone", version = "0.12.0" } -solana-jsonrpc-core = "0.4.0" -solana-jsonrpc-http-server = "0.4.0" -solana-jsonrpc-macros = "0.4.0" -solana-jsonrpc-pubsub = "0.4.0" -solana-jsonrpc-ws-server = "0.4.0" solana-logger = { path = "logger", version = "0.12.0" } solana-metrics = { path = "metrics", version = "0.12.0" } solana-native-loader = { path = "programs/native/native_loader", version = "0.12.0" } diff --git a/src/lib.rs b/src/lib.rs index 617d2e512..2157a589b 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -88,13 +88,6 @@ extern crate serde_derive; #[macro_use] extern crate serde_json; -use solana_jsonrpc_core as jsonrpc_core; -use solana_jsonrpc_http_server as jsonrpc_http_server; -#[macro_use] -extern crate solana_jsonrpc_macros as jsonrpc_macros; -use solana_jsonrpc_pubsub as jsonrpc_pubsub; -use solana_jsonrpc_ws_server as jsonrpc_ws_server; - #[cfg(test)] #[macro_use] extern crate matches; diff --git a/src/rpc.rs b/src/rpc.rs index cda27f207..cac87e3a2 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -2,13 +2,14 @@ use crate::bank::{self, Bank, BankError}; use crate::cluster_info::ClusterInfo; -use crate::jsonrpc_core::*; -use crate::jsonrpc_http_server::*; use crate::packet::PACKET_DATA_SIZE; use crate::service::Service; use crate::storage_stage::StorageState; use bincode::{deserialize, serialize}; use bs58; +use jsonrpc_core::{Error, ErrorCode, MetaIoHandler, Metadata, Result}; +use jsonrpc_derive::rpc; +use jsonrpc_http_server::{hyper, AccessControlAllowOrigin, DomainsValidation, ServerBuilder}; use solana_drone::drone::request_airdrop_transaction; use solana_sdk::account::Account; use solana_sdk::pubkey::Pubkey; @@ -139,46 +140,49 @@ impl FromStr for RpcSignatureStatus { } } -build_rpc_trait! { - pub trait RpcSol { - type Metadata; +#[rpc] +pub trait RpcSol { + type Metadata; - #[rpc(meta, name = "confirmTransaction")] - fn confirm_transaction(&self, Self::Metadata, String) -> Result; + #[rpc(meta, name = "confirmTransaction")] + fn confirm_transaction(&self, _: Self::Metadata, _: String) -> Result; - #[rpc(meta, name = "getAccountInfo")] - fn get_account_info(&self, Self::Metadata, String) -> Result; + #[rpc(meta, name = "getAccountInfo")] + fn get_account_info(&self, _: Self::Metadata, _: String) -> Result; - #[rpc(meta, name = "getBalance")] - fn get_balance(&self, Self::Metadata, String) -> Result; + #[rpc(meta, name = "getBalance")] + fn get_balance(&self, _: Self::Metadata, _: String) -> Result; - #[rpc(meta, name = "getConfirmationTime")] - fn get_confirmation_time(&self, Self::Metadata) -> Result; + #[rpc(meta, name = "getConfirmationTime")] + fn get_confirmation_time(&self, _: Self::Metadata) -> Result; - #[rpc(meta, name = "getLastId")] - fn get_last_id(&self, Self::Metadata) -> Result; + #[rpc(meta, name = "getLastId")] + fn get_last_id(&self, _: Self::Metadata) -> Result; - #[rpc(meta, name = "getSignatureStatus")] - fn get_signature_status(&self, Self::Metadata, String) -> Result; + #[rpc(meta, name = "getSignatureStatus")] + fn get_signature_status(&self, _: Self::Metadata, _: String) -> Result; - #[rpc(meta, name = "getTransactionCount")] - fn get_transaction_count(&self, Self::Metadata) -> Result; + #[rpc(meta, name = "getTransactionCount")] + fn get_transaction_count(&self, _: Self::Metadata) -> Result; - #[rpc(meta, name= "requestAirdrop")] - fn request_airdrop(&self, Self::Metadata, String, u64) -> Result; + #[rpc(meta, name = "requestAirdrop")] + fn request_airdrop(&self, _: Self::Metadata, _: String, _: u64) -> Result; - #[rpc(meta, name = "sendTransaction")] - fn send_transaction(&self, Self::Metadata, Vec) -> Result; + #[rpc(meta, name = "sendTransaction")] + fn send_transaction(&self, _: Self::Metadata, _: Vec) -> Result; - #[rpc(meta, name = "getStorageMiningLastId")] - fn get_storage_mining_last_id(&self, Self::Metadata) -> Result; + #[rpc(meta, name = "getStorageMiningLastId")] + fn get_storage_mining_last_id(&self, _: Self::Metadata) -> Result; - #[rpc(meta, name = "getStorageMiningEntryHeight")] - fn get_storage_mining_entry_height(&self, Self::Metadata) -> Result; + #[rpc(meta, name = "getStorageMiningEntryHeight")] + fn get_storage_mining_entry_height(&self, _: Self::Metadata) -> Result; - #[rpc(meta, name = "getStoragePubkeysForEntryHeight")] - fn get_storage_pubkeys_for_entry_height(&self, Self::Metadata, u64) -> Result>; - } + #[rpc(meta, name = "getStoragePubkeysForEntryHeight")] + fn get_storage_pubkeys_for_entry_height( + &self, + _: Self::Metadata, + _: u64, + ) -> Result>; } pub struct RpcSolImpl; @@ -449,7 +453,7 @@ mod tests { use crate::bank::Bank; use crate::cluster_info::NodeInfo; use crate::genesis_block::GenesisBlock; - use crate::jsonrpc_core::Response; + use jsonrpc_core::Response; use solana_sdk::hash::{hash, Hash}; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction::SystemTransaction; diff --git a/src/rpc_pubsub.rs b/src/rpc_pubsub.rs index 47a33d911..f9930c992 100644 --- a/src/rpc_pubsub.rs +++ b/src/rpc_pubsub.rs @@ -2,15 +2,15 @@ use crate::bank; use crate::bank::{Bank, BankError, BankSubscriptions}; -use crate::jsonrpc_core::futures::Future; -use crate::jsonrpc_core::*; -use crate::jsonrpc_macros::pubsub; -use crate::jsonrpc_macros::pubsub::Sink; -use crate::jsonrpc_pubsub::{PubSubHandler, Session, SubscriptionId}; -use crate::jsonrpc_ws_server::{RequestContext, Sender, ServerBuilder}; use crate::rpc::RpcSignatureStatus; use crate::service::Service; use bs58; +use jsonrpc_core::futures::Future; +use jsonrpc_core::{Error, ErrorCode, Result}; +use jsonrpc_derive::rpc; +use jsonrpc_pubsub::typed::{Sink, Subscriber}; +use jsonrpc_pubsub::{PubSubHandler, Session, SubscriptionId}; +use jsonrpc_ws_server::{RequestContext, ServerBuilder}; use solana_sdk::account::Account; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::Signature; @@ -22,11 +22,6 @@ use std::sync::{atomic, Arc, RwLock}; use std::thread::{self, sleep, Builder, JoinHandle}; use std::time::Duration; -pub enum ClientState { - Uninitialized, - Init(Sender), -} - pub struct PubSubService { thread_hdl: JoinHandle<()>, exit: Arc, @@ -100,31 +95,43 @@ impl PubSubService { } } -build_rpc_trait! { - pub trait RpcSolPubSub { - type Metadata; +#[rpc] +pub trait RpcSolPubSub { + type Metadata; - #[pubsub(name = "accountNotification")] { - // Get notification every time account userdata is changed - // Accepts pubkey parameter as base-58 encoded string - #[rpc(name = "accountSubscribe")] - fn account_subscribe(&self, Self::Metadata, pubsub::Subscriber, String); + // Get notification every time account userdata is changed + // Accepts pubkey parameter as base-58 encoded string + #[pubsub( + subscription = "accountNotification", + subscribe, + name = "accountSubscribe" + )] + fn account_subscribe(&self, _: Self::Metadata, _: Subscriber, _: String); - // Unsubscribe from account notification subscription. - #[rpc(name = "accountUnsubscribe")] - fn account_unsubscribe(&self, SubscriptionId) -> Result; - } - #[pubsub(name = "signatureNotification")] { - // Get notification when signature is verified - // Accepts signature parameter as base-58 encoded string - #[rpc(name = "signatureSubscribe")] - fn signature_subscribe(&self, Self::Metadata, pubsub::Subscriber, String); + // Unsubscribe from account notification subscription. + #[pubsub( + subscription = "accountNotification", + unsubscribe, + name = "accountUnsubscribe" + )] + fn account_unsubscribe(&self, _: Option, _: SubscriptionId) -> Result; - // Unsubscribe from signature notification subscription. - #[rpc(name = "signatureUnsubscribe")] - fn signature_unsubscribe(&self, SubscriptionId) -> Result; - } - } + // Get notification when signature is verified + // Accepts signature parameter as base-58 encoded string + #[pubsub( + subscription = "signatureNotification", + subscribe, + name = "signatureSubscribe" + )] + fn signature_subscribe(&self, _: Self::Metadata, _: Subscriber, _: String); + + // Unsubscribe from signature notification subscription. + #[pubsub( + subscription = "signatureNotification", + unsubscribe, + name = "signatureUnsubscribe" + )] + fn signature_unsubscribe(&self, _: Option, _: SubscriptionId) -> Result; } struct RpcPubSubBank { @@ -259,11 +266,7 @@ impl RpcSolPubSubImpl { } } - fn subscribe_to_account_updates( - &self, - subscriber: pubsub::Subscriber, - pubkey_str: String, - ) { + fn subscribe_to_account_updates(&self, subscriber: Subscriber, pubkey_str: String) { let pubkey_vec = bs58::decode(pubkey_str).into_vec().unwrap(); if pubkey_vec.len() != mem::size_of::() { subscriber @@ -288,7 +291,7 @@ impl RpcSolPubSubImpl { fn subscribe_to_signature_updates( &self, - subscriber: pubsub::Subscriber, + subscriber: Subscriber, signature_str: String, ) { info!("signature_subscribe"); @@ -339,13 +342,17 @@ impl RpcSolPubSub for RpcSolPubSubImpl { fn account_subscribe( &self, _meta: Self::Metadata, - subscriber: pubsub::Subscriber, + subscriber: Subscriber, pubkey_str: String, ) { self.subscribe_to_account_updates(subscriber, pubkey_str) } - fn account_unsubscribe(&self, id: SubscriptionId) -> Result { + fn account_unsubscribe( + &self, + _meta: Option, + id: SubscriptionId, + ) -> Result { info!("account_unsubscribe: id={:?}", id); if self.subscription.remove_account_subscription(&id) { Ok(true) @@ -361,13 +368,17 @@ impl RpcSolPubSub for RpcSolPubSubImpl { fn signature_subscribe( &self, _meta: Self::Metadata, - subscriber: pubsub::Subscriber, + subscriber: Subscriber, signature_str: String, ) { self.subscribe_to_signature_updates(subscriber, signature_str) } - fn signature_unsubscribe(&self, id: SubscriptionId) -> Result { + fn signature_unsubscribe( + &self, + _meta: Option, + id: SubscriptionId, + ) -> Result { info!("signature_unsubscribe"); if self.subscription.remove_signature_subscription(&id) { Ok(true) @@ -385,8 +396,8 @@ impl RpcSolPubSub for RpcSolPubSubImpl { mod tests { use super::*; use crate::genesis_block::GenesisBlock; - use crate::jsonrpc_core::futures::sync::mpsc; - use crate::jsonrpc_macros::pubsub::{Subscriber, SubscriptionId}; + use jsonrpc_core::futures::sync::mpsc; + use jsonrpc_core::Response; use solana_sdk::budget_program; use solana_sdk::budget_transaction::BudgetTransaction; use solana_sdk::signature::{Keypair, KeypairUtil}; diff --git a/src/rpc_request.rs b/src/rpc_request.rs index 457b0adeb..4eb30b5cf 100644 --- a/src/rpc_request.rs +++ b/src/rpc_request.rs @@ -181,8 +181,8 @@ impl error::Error for RpcError { #[cfg(test)] mod tests { use super::*; - use crate::jsonrpc_core::*; - use crate::jsonrpc_http_server::*; + use jsonrpc_core::{Error, IoHandler, Params}; + use jsonrpc_http_server::{AccessControlAllowOrigin, DomainsValidation, ServerBuilder}; use serde_json::Number; use std::net::{Ipv4Addr, SocketAddr}; use std::sync::mpsc::channel; diff --git a/src/voting_keypair.rs b/src/voting_keypair.rs index c7d40ef4c..ed988fdb3 100644 --- a/src/voting_keypair.rs +++ b/src/voting_keypair.rs @@ -1,7 +1,7 @@ //! The `vote_signer_proxy` votes on the `last_id` of the bank at a regular cadence -use crate::jsonrpc_core; use crate::rpc_request::{RpcClient, RpcRequest}; +use jsonrpc_core; use solana_sdk::pubkey::Pubkey; use solana_sdk::signature::{Keypair, KeypairUtil, Signature}; use solana_vote_signer::rpc::LocalVoteSigner; diff --git a/vote-signer/src/rpc.rs b/vote-signer/src/rpc.rs index 7be5a94d9..df47c96c5 100644 --- a/vote-signer/src/rpc.rs +++ b/vote-signer/src/rpc.rs @@ -178,7 +178,7 @@ impl Default for LocalVoteSigner { #[cfg(test)] mod tests { use super::*; - use crate::jsonrpc_core::Response; + use jsonrpc_core::{types::*, Response}; use solana_sdk::signature::{Keypair, KeypairUtil}; use std::mem;