Exposing loggin via RPC
This commit is contained in:
@@ -15,8 +15,9 @@
|
||||
// along with Parity. If not, see <http://www.gnu.org/licenses/>.
|
||||
|
||||
//! Ethcore-specific rpc implementation.
|
||||
use util::{U256, Address};
|
||||
use util::{U256, Address, RotatingLogger};
|
||||
use std::sync::{Arc, Weak};
|
||||
use std::ops::Deref;
|
||||
use jsonrpc_core::*;
|
||||
use ethminer::{MinerService};
|
||||
use v1::traits::Ethcore;
|
||||
@@ -26,13 +27,15 @@ use v1::types::Bytes;
|
||||
pub struct EthcoreClient<M>
|
||||
where M: MinerService {
|
||||
miner: Weak<M>,
|
||||
logger: Arc<RotatingLogger>,
|
||||
}
|
||||
|
||||
impl<M> EthcoreClient<M> where M: MinerService {
|
||||
/// Creates new `EthcoreClient`.
|
||||
pub fn new(miner: &Arc<M>) -> Self {
|
||||
pub fn new(miner: &Arc<M>, logger: Arc<RotatingLogger>) -> Self {
|
||||
EthcoreClient {
|
||||
miner: Arc::downgrade(miner)
|
||||
miner: Arc::downgrade(miner),
|
||||
logger: logger,
|
||||
}
|
||||
}
|
||||
}
|
||||
@@ -78,4 +81,14 @@ impl<M> Ethcore for EthcoreClient<M> where M: MinerService + 'static {
|
||||
fn gas_floor_target(&self, _: Params) -> Result<Value, Error> {
|
||||
to_value(&take_weak!(self.miner).gas_floor_target())
|
||||
}
|
||||
|
||||
fn dev_logs(&self, _params: Params) -> Result<Value, Error> {
|
||||
let logs = self.logger.logs();
|
||||
to_value(&logs.deref())
|
||||
}
|
||||
|
||||
fn dev_logs_levels(&self, _params: Params) -> Result<Value, Error> {
|
||||
to_value(&self.logger.levels())
|
||||
}
|
||||
|
||||
}
|
||||
|
||||
@@ -42,6 +42,12 @@ pub trait Ethcore: Sized + Send + Sync + 'static {
|
||||
/// Returns minimal gas price for transaction to be included in queue.
|
||||
fn min_gas_price(&self, _: Params) -> Result<Value, Error> { rpc_unimplemented!() }
|
||||
|
||||
/// Returns latest logs
|
||||
fn dev_logs(&self, _: Params) -> Result<Value, Error> { rpc_unimplemented!() }
|
||||
|
||||
/// Returns logs levels
|
||||
fn dev_logs_levels(&self, _: Params) -> Result<Value, Error> { rpc_unimplemented!() }
|
||||
|
||||
/// Should be used to convert object to io delegate.
|
||||
fn to_delegate(self) -> IoDelegate<Self> {
|
||||
let mut delegate = IoDelegate::new(Arc::new(self));
|
||||
@@ -53,6 +59,8 @@ pub trait Ethcore: Sized + Send + Sync + 'static {
|
||||
delegate.add_method("ethcore_extraData", Ethcore::extra_data);
|
||||
delegate.add_method("ethcore_gasFloorTarget", Ethcore::gas_floor_target);
|
||||
delegate.add_method("ethcore_minGasPrice", Ethcore::min_gas_price);
|
||||
delegate.add_method("ethcore_devLogs", Ethcore::dev_logs);
|
||||
delegate.add_method("ethcore_devLogsLevels", Ethcore::dev_logs_levels);
|
||||
delegate
|
||||
}
|
||||
}
|
||||
|
||||
Reference in New Issue
Block a user