From e9b0e3cb9d45a4a69c507ad8c72567e0a43f635a Mon Sep 17 00:00:00 2001 From: Greg Fitzgerald Date: Sun, 17 Feb 2019 11:17:58 -0700 Subject: [PATCH] Move RpcSignatureStatus into its own module And fixup some imports from previous commits. --- src/lib.rs | 1 + src/rpc.rs | 30 +++--------------------------- src/rpc_pubsub.rs | 4 +++- src/rpc_status.rs | 30 ++++++++++++++++++++++++++++++ src/rpc_subscriptions.rs | 4 +++- wallet/src/wallet.rs | 3 ++- 6 files changed, 42 insertions(+), 30 deletions(-) create mode 100644 src/rpc_status.rs diff --git a/src/lib.rs b/src/lib.rs index db2c19d6d..8b662d72f 100644 --- a/src/lib.rs +++ b/src/lib.rs @@ -64,6 +64,7 @@ pub mod rpc_pubsub; pub mod rpc_pubsub_service; pub mod rpc_request; pub mod rpc_service; +pub mod rpc_status; pub mod rpc_subscriptions; pub mod service; pub mod sigverify; diff --git a/src/rpc.rs b/src/rpc.rs index 7b67bf2b8..8c0639667 100644 --- a/src/rpc.rs +++ b/src/rpc.rs @@ -3,6 +3,7 @@ use crate::bank::{self, Bank, BankError}; use crate::cluster_info::ClusterInfo; use crate::packet::PACKET_DATA_SIZE; +use crate::rpc_status::RpcSignatureStatus; use crate::storage_stage::StorageState; use bincode::{deserialize, serialize}; use bs58; @@ -15,7 +16,6 @@ use solana_sdk::signature::Signature; use solana_sdk::transaction::Transaction; use std::mem; use std::net::{SocketAddr, UdpSocket}; -use std::str::FromStr; use std::sync::{Arc, RwLock}; use std::thread::sleep; use std::time::{Duration, Instant}; @@ -123,31 +123,6 @@ pub struct Meta { } impl Metadata for Meta {} -#[derive(Copy, Clone, PartialEq, Serialize, Debug)] -pub enum RpcSignatureStatus { - AccountInUse, - AccountLoadedTwice, - Confirmed, - GenericFailure, - ProgramRuntimeError, - SignatureNotFound, -} -impl FromStr for RpcSignatureStatus { - type Err = Error; - - fn from_str(s: &str) -> Result { - match s { - "AccountInUse" => Ok(RpcSignatureStatus::AccountInUse), - "AccountLoadedTwice" => Ok(RpcSignatureStatus::AccountLoadedTwice), - "Confirmed" => Ok(RpcSignatureStatus::Confirmed), - "GenericFailure" => Ok(RpcSignatureStatus::GenericFailure), - "ProgramRuntimeError" => Ok(RpcSignatureStatus::ProgramRuntimeError), - "SignatureNotFound" => Ok(RpcSignatureStatus::SignatureNotFound), - _ => Err(Error::parse_error()), - } - } -} - #[rpc] pub trait RpcSol { type Metadata; @@ -356,11 +331,12 @@ mod tests { use crate::bank::Bank; use crate::cluster_info::NodeInfo; use crate::genesis_block::GenesisBlock; - use jsonrpc_core::Response; + use jsonrpc_core::{MetaIoHandler, Response}; use solana_sdk::hash::{hash, Hash}; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction::SystemTransaction; use std::net::{IpAddr, Ipv4Addr, SocketAddr}; + use std::thread; fn start_rpc_handler_with_tx(pubkey: Pubkey) -> (MetaIoHandler, Meta, Hash, Keypair) { let (genesis_block, alice) = GenesisBlock::new(10_000); diff --git a/src/rpc_pubsub.rs b/src/rpc_pubsub.rs index d79a99953..df9714e5a 100644 --- a/src/rpc_pubsub.rs +++ b/src/rpc_pubsub.rs @@ -1,7 +1,7 @@ //! The `pubsub` module implements a threaded subscription service on client RPC request use crate::bank::Bank; -use crate::rpc::RpcSignatureStatus; +use crate::rpc_status::RpcSignatureStatus; use crate::rpc_subscriptions::RpcSubscriptions; use bs58; use jsonrpc_core::futures::Future; @@ -215,11 +215,13 @@ mod tests { use crate::genesis_block::GenesisBlock; use jsonrpc_core::futures::sync::mpsc; use jsonrpc_core::Response; + use jsonrpc_pubsub::{PubSubHandler, Session}; use solana_sdk::budget_program; use solana_sdk::budget_transaction::BudgetTransaction; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction::SystemTransaction; use std::thread::sleep; + use std::time::Duration; use tokio::prelude::{Async, Stream}; #[test] diff --git a/src/rpc_status.rs b/src/rpc_status.rs new file mode 100644 index 000000000..df21edd9f --- /dev/null +++ b/src/rpc_status.rs @@ -0,0 +1,30 @@ +//! The `rpc_status` module defines transaction status codes + +use jsonrpc_core::{Error, Result}; +use std::str::FromStr; + +#[derive(Copy, Clone, PartialEq, Serialize, Debug)] +pub enum RpcSignatureStatus { + AccountInUse, + AccountLoadedTwice, + Confirmed, + GenericFailure, + ProgramRuntimeError, + SignatureNotFound, +} + +impl FromStr for RpcSignatureStatus { + type Err = Error; + + fn from_str(s: &str) -> Result { + match s { + "AccountInUse" => Ok(RpcSignatureStatus::AccountInUse), + "AccountLoadedTwice" => Ok(RpcSignatureStatus::AccountLoadedTwice), + "Confirmed" => Ok(RpcSignatureStatus::Confirmed), + "GenericFailure" => Ok(RpcSignatureStatus::GenericFailure), + "ProgramRuntimeError" => Ok(RpcSignatureStatus::ProgramRuntimeError), + "SignatureNotFound" => Ok(RpcSignatureStatus::SignatureNotFound), + _ => Err(Error::parse_error()), + } + } +} diff --git a/src/rpc_subscriptions.rs b/src/rpc_subscriptions.rs index a0f4772c4..88ce743eb 100644 --- a/src/rpc_subscriptions.rs +++ b/src/rpc_subscriptions.rs @@ -1,7 +1,7 @@ //! The `pubsub` module implements a threaded subscription service on client RPC request use crate::bank::{self, BankError}; -use crate::rpc::RpcSignatureStatus; +use crate::rpc_status::RpcSignatureStatus; use jsonrpc_core::futures::Future; use jsonrpc_pubsub::typed::Sink; use jsonrpc_pubsub::SubscriptionId; @@ -121,7 +121,9 @@ impl RpcSubscriptions { #[cfg(test)] mod tests { use super::*; + use crate::bank::Bank; use crate::genesis_block::GenesisBlock; + use jsonrpc_pubsub::typed::Subscriber; use solana_sdk::budget_program; use solana_sdk::signature::{Keypair, KeypairUtil}; use solana_sdk::system_transaction::SystemTransaction; diff --git a/wallet/src/wallet.rs b/wallet/src/wallet.rs index 72231d0a7..3343ccd5d 100644 --- a/wallet/src/wallet.rs +++ b/wallet/src/wallet.rs @@ -4,12 +4,13 @@ use chrono::prelude::*; use clap::ArgMatches; use serde_json; use serde_json::json; -use solana::rpc::{RpcSignatureStatus, RPC_PORT}; #[cfg(test)] use solana::rpc_mock::{request_airdrop_transaction, MockRpcClient as RpcClient}; #[cfg(not(test))] use solana::rpc_request::RpcClient; use solana::rpc_request::{get_rpc_request_str, RpcRequest}; +use solana::rpc_service::RPC_PORT; +use solana::rpc_status::RpcSignatureStatus; #[cfg(not(test))] use solana_drone::drone::request_airdrop_transaction; use solana_drone::drone::DRONE_PORT;