first add of getrawmempool - work in progress
This commit is contained in:
@@ -66,6 +66,10 @@ message Coinsupply {
|
|||||||
int64 total = 6;
|
int64 total = 6;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
message RawMempool {
|
||||||
|
string ID = 1;
|
||||||
|
}
|
||||||
|
|
||||||
message TransparentAddress {
|
message TransparentAddress {
|
||||||
string address = 1;
|
string address = 1;
|
||||||
}
|
}
|
||||||
@@ -91,4 +95,5 @@ service CompactTxStreamer {
|
|||||||
// Misc
|
// Misc
|
||||||
rpc GetLightdInfo(Empty) returns (LightdInfo) {}
|
rpc GetLightdInfo(Empty) returns (LightdInfo) {}
|
||||||
rpc GetCoinsupply(Empty) returns (Coinsupply) {}
|
rpc GetCoinsupply(Empty) returns (Coinsupply) {}
|
||||||
|
rpc GetRawMempool(Empty) returns (RawMempool) {}
|
||||||
}
|
}
|
||||||
|
|||||||
@@ -223,6 +223,27 @@ impl Command for CoinsupplyCommand {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
struct RawMempoolCommand {}
|
||||||
|
impl Command for RawMempoolCommand {
|
||||||
|
fn help(&self) -> String {
|
||||||
|
let mut h = vec![];
|
||||||
|
h.push("Get info about the actual raw of Hush");
|
||||||
|
h.push("Usage:");
|
||||||
|
h.push("rawmempool");
|
||||||
|
h.push("");
|
||||||
|
|
||||||
|
h.join("\n")
|
||||||
|
}
|
||||||
|
|
||||||
|
fn short_help(&self) -> String {
|
||||||
|
"Get the RawMemPool info".to_string()
|
||||||
|
}
|
||||||
|
|
||||||
|
fn exec(&self, _args: &[&str], lightclient: &LightClient) -> String {
|
||||||
|
lightclient.do_rawmempool()
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
struct BalanceCommand {}
|
struct BalanceCommand {}
|
||||||
impl Command for BalanceCommand {
|
impl Command for BalanceCommand {
|
||||||
fn help(&self) -> String {
|
fn help(&self) -> String {
|
||||||
@@ -856,6 +877,7 @@ pub fn get_commands() -> Box<HashMap<String, Box<dyn Command>>> {
|
|||||||
map.insert("export".to_string(), Box::new(ExportCommand{}));
|
map.insert("export".to_string(), Box::new(ExportCommand{}));
|
||||||
map.insert("info".to_string(), Box::new(InfoCommand{}));
|
map.insert("info".to_string(), Box::new(InfoCommand{}));
|
||||||
map.insert("coinsupply".to_string(), Box::new(CoinsupplyCommand{}));
|
map.insert("coinsupply".to_string(), Box::new(CoinsupplyCommand{}));
|
||||||
|
map.insert("rawmempool".to_string(), Box::new(RawMempoolCommand{}));
|
||||||
map.insert("send".to_string(), Box::new(SendCommand{}));
|
map.insert("send".to_string(), Box::new(SendCommand{}));
|
||||||
map.insert("save".to_string(), Box::new(SaveCommand{}));
|
map.insert("save".to_string(), Box::new(SaveCommand{}));
|
||||||
map.insert("quit".to_string(), Box::new(QuitCommand{}));
|
map.insert("quit".to_string(), Box::new(QuitCommand{}));
|
||||||
|
|||||||
@@ -3,7 +3,7 @@ use std::sync::Arc;
|
|||||||
use zcash_primitives::transaction::{TxId};
|
use zcash_primitives::transaction::{TxId};
|
||||||
|
|
||||||
use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction,
|
use crate::grpc_client::{ChainSpec, BlockId, BlockRange, RawTransaction,
|
||||||
TransparentAddressBlockFilter, TxFilter, Empty, LightdInfo, Coinsupply};
|
TransparentAddressBlockFilter, TxFilter, Empty, LightdInfo, Coinsupply, RawMempool};
|
||||||
use tonic::transport::{Channel, ClientTlsConfig};
|
use tonic::transport::{Channel, ClientTlsConfig};
|
||||||
use tokio_rustls::{rustls::ClientConfig};
|
use tokio_rustls::{rustls::ClientConfig};
|
||||||
use tonic::{Request};
|
use tonic::{Request};
|
||||||
@@ -95,6 +95,23 @@ pub fn get_coinsupply(uri: http::Uri, no_cert: bool) -> Result<Coinsupply, Strin
|
|||||||
// tokio::runtime::current_thread::Runtime::new().unwrap().block_on(runner)
|
// tokio::runtime::current_thread::Runtime::new().unwrap().block_on(runner)
|
||||||
}
|
}
|
||||||
|
|
||||||
|
async fn get_rawmempool_info(uri: &http::Uri, no_cert: bool) -> Result<RawMempool, Box<dyn std::error::Error>> {
|
||||||
|
let mut client = get_client(uri, no_cert).await?;
|
||||||
|
|
||||||
|
let request = Request::new(Empty {});
|
||||||
|
|
||||||
|
let response = client.get_raw_mempool(request).await?;
|
||||||
|
|
||||||
|
Ok(response.into_inner())
|
||||||
|
}
|
||||||
|
pub fn get_rawmempool(uri: http::Uri, no_cert: bool) -> Result<RawMempool, String> {
|
||||||
|
let mut rt = tokio::runtime::Runtime::new().map_err(|e| e.to_string())?;
|
||||||
|
|
||||||
|
rt.block_on(get_rawmempool_info(&uri, no_cert)).map_err( |e| e.to_string())
|
||||||
|
// tokio::runtime::current_thread::Runtime::new().unwrap().block_on(runner)
|
||||||
|
}
|
||||||
|
|
||||||
|
|
||||||
async fn get_block_range<F : 'static + std::marker::Send>(uri: &http::Uri, start_height: u64, end_height: u64, no_cert: bool, mut c: F)
|
async fn get_block_range<F : 'static + std::marker::Send>(uri: &http::Uri, start_height: u64, end_height: u64, no_cert: bool, mut c: F)
|
||||||
-> Result<(), Box<dyn std::error::Error>>
|
-> Result<(), Box<dyn std::error::Error>>
|
||||||
where F : FnMut(&[u8], u64) {
|
where F : FnMut(&[u8], u64) {
|
||||||
|
|||||||
@@ -652,6 +652,19 @@ impl LightClient {
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
|
pub fn do_rawmempool(&self) -> String {
|
||||||
|
match get_rawmempool(self.get_server_uri(), self.config.no_cert_verification) {
|
||||||
|
Ok(i) => {
|
||||||
|
let o = object!{
|
||||||
|
"ID" => i.id
|
||||||
|
|
||||||
|
};
|
||||||
|
o.pretty(2)
|
||||||
|
},
|
||||||
|
Err(e) => e
|
||||||
|
}
|
||||||
|
}
|
||||||
|
|
||||||
pub fn do_seed_phrase(&self) -> Result<JsonValue, &str> {
|
pub fn do_seed_phrase(&self) -> Result<JsonValue, &str> {
|
||||||
if !self.wallet.read().unwrap().is_unlocked_for_spending() {
|
if !self.wallet.read().unwrap().is_unlocked_for_spending() {
|
||||||
error!("Wallet is locked");
|
error!("Wallet is locked");
|
||||||
|
|||||||
Reference in New Issue
Block a user