client.rs 33.6 KiB
Newer Older
		let _import_lock = self.import_lock.lock();
		let _timer = PerfTimer::new("import_sealed_block");

		let original_best = self.chain_info().best_block_hash;

		let h = block.header().hash();
		let number = block.header().number();

		let block_data = block.rlp_bytes();
		let route = self.commit_block(block, &h, &block_data);
		trace!(target: "client", "Imported sealed block #{} ({})", number, h);

		{
			let (enacted, retracted) = self.calculate_enacted_retracted(&[route]);
			self.miner.chain_new_blocks(self, &[h.clone()], &[], &enacted, &retracted);

			if let Some(notify) = self.notify() {
				notify.new_blocks(
					vec![h.clone()],
					vec![],
					enacted,
					retracted,
					vec![h.clone()],
				);
			}
		}

		if self.chain_info().best_block_hash != original_best {
			self.miner.update_sealing(self);
		}

		Ok(h)
	}
Tomusdrw's avatar
Tomusdrw committed
impl MayPanic for Client {
	fn on_panic<F>(&self, closure: F) where F: OnPanicListener {
Nikolay Volf's avatar
Nikolay Volf committed
impl IpcConfig<BlockChainClient> for Arc<BlockChainClient> { }