Skip to content

Commit 1f14a1b

Browse files
author
Hyunsik Jeong
committed
Add reseal timer to client
1 parent 8dcfa74 commit 1f14a1b

File tree

2 files changed

+20
-2
lines changed

2 files changed

+20
-2
lines changed

codechain/run_node.rs

Lines changed: 10 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -86,14 +86,22 @@ fn discovery_start(service: &NetworkService, cfg: &config::Network) -> Result<()
8686
Ok(())
8787
}
8888

89-
fn client_start(cfg: &config::Operating, scheme: &Scheme, miner: Arc<Miner>) -> Result<ClientService, String> {
89+
fn client_start(
90+
timer_loop: &TimerLoop,
91+
cfg: &config::Operating,
92+
scheme: &Scheme,
93+
miner: Arc<Miner>,
94+
) -> Result<ClientService, String> {
9095
cinfo!(CLIENT, "Starting client");
9196
let db_path = cfg.db_path.as_ref().map(|s| s.as_str()).unwrap();
9297
let client_path = Path::new(db_path);
9398
let client_config = Default::default();
9499
let service = ClientService::start(&client_config, &scheme, &client_path, miner)
95100
.map_err(|e| format!("Client service error: {}", e))?;
96101

102+
let reseal_timer = timer_loop.new_timer("Client reseal timer", service.client());
103+
service.client().register_reseal_timer(reseal_timer);
104+
97105
Ok(service)
98106
}
99107

@@ -229,7 +237,7 @@ pub fn run_node(matches: &ArgMatches) -> Result<(), String> {
229237
unlock_accounts(&*ap, &pf)?;
230238

231239
let miner = new_miner(&config, &scheme, ap.clone())?;
232-
let client = client_start(&config.operating, &scheme, miner.clone())?;
240+
let client = client_start(&timer_loop, &config.operating, &scheme, miner.clone())?;
233241
let sync = BlockSyncExtension::new(client.client());
234242

235243
scheme.engine.register_chain_notify(client.client().as_ref());

core/src/client/client.rs

Lines changed: 10 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -25,6 +25,7 @@ use cnetwork::NodeId;
2525
use cstate::{
2626
ActionHandler, AssetScheme, AssetSchemeAddress, OwnedAsset, OwnedAssetAddress, StateDB, TopLevelState, TopStateView,
2727
};
28+
use ctimer::{TimeoutHandler, TimerApi};
2829
use ctypes::invoice::Invoice;
2930
use ctypes::transaction::Transaction;
3031
use ctypes::{BlockNumber, ShardId};
@@ -79,6 +80,8 @@ pub struct Client {
7980
genesis_accounts: Vec<Address>,
8081

8182
importer: Importer,
83+
84+
reseal_timer: Mutex<Option<TimerApi>>,
8285
}
8386

8487
impl Client {
@@ -121,13 +124,18 @@ impl Client {
121124
queue_parcels: AtomicUsize::new(0),
122125
genesis_accounts,
123126
importer,
127+
reseal_timer: Mutex::new(None),
124128
});
125129

126130
// ensure buffered changes are flushed.
127131
client.db.read().flush().map_err(ClientError::Database)?;
128132
Ok(client)
129133
}
130134

135+
pub fn register_reseal_timer(&self, timer: TimerApi) {
136+
*self.reseal_timer.lock() = Some(timer);
137+
}
138+
131139
/// Returns engine reference.
132140
pub fn engine(&self) -> &CodeChainEngine {
133141
&*self.engine
@@ -260,6 +268,8 @@ impl Client {
260268
}
261269
}
262270

271+
impl TimeoutHandler for Client {}
272+
263273
impl DatabaseClient for Client {
264274
fn database(&self) -> Arc<KeyValueDB> {
265275
Arc::clone(&self.db())

0 commit comments

Comments
 (0)