parity-zcash/rpc/src/v1/impls/miner.rs

50 lines
1.0 KiB
Rust
Raw Normal View History

2016-12-09 05:37:12 -08:00
use v1::traits::Miner;
use v1::types::{BlockTemplate, BlockTemplateRequest};
use jsonrpc_core::Error;
use sync;
use miner;
2016-12-09 05:37:12 -08:00
pub struct MinerClient<T: MinerClientCoreApi> {
core: T,
2016-12-09 05:37:12 -08:00
}
pub trait MinerClientCoreApi: Send + Sync + 'static {
fn get_block_template(&self) -> miner::BlockTemplate;
2016-12-09 05:37:12 -08:00
}
pub struct MinerClientCore {
local_sync_node: sync::LocalNodeRef,
2016-12-09 05:37:12 -08:00
}
impl MinerClientCore {
pub fn new(local_sync_node: sync::LocalNodeRef) -> Self {
2016-12-09 05:37:12 -08:00
MinerClientCore {
local_sync_node: local_sync_node,
2016-12-09 05:37:12 -08:00
}
}
}
impl MinerClientCoreApi for MinerClientCore {
fn get_block_template(&self) -> miner::BlockTemplate {
self.local_sync_node.get_block_template()
}
2016-12-09 05:37:12 -08:00
}
impl<T> MinerClient<T> where T: MinerClientCoreApi {
pub fn new(core: T) -> Self {
MinerClient {
core: core,
2016-12-09 05:37:12 -08:00
}
}
}
impl<T> Miner for MinerClient<T> where T: MinerClientCoreApi {
fn get_block_template(&self, _request: BlockTemplateRequest) -> Result<BlockTemplate, Error> {
Ok(self.core.get_block_template().into())
2016-12-09 05:37:12 -08:00
}
}
#[cfg(test)]
pub mod tests {
}