Add `HydrabadgerWeak`.
This commit is contained in:
parent
5e4eabf787
commit
a5d756d748
|
@ -136,10 +136,6 @@ fn main() {
|
|||
|
||||
let mut cfg = Config::default();
|
||||
|
||||
if let Some(bs) = matches.value_of("batch-size") {
|
||||
cfg.batch_size = bs.parse().expect("Invalid batch size.");
|
||||
}
|
||||
|
||||
if let Some(tgc) = matches.value_of("txn-gen-count") {
|
||||
cfg.txn_gen_count = tgc.parse().expect("Invalid transaction generation count.");
|
||||
}
|
||||
|
|
|
@ -22,7 +22,7 @@ use std::{
|
|||
net::{SocketAddr, ToSocketAddrs},
|
||||
sync::{
|
||||
atomic::{AtomicUsize, Ordering},
|
||||
Arc,
|
||||
Arc, Weak,
|
||||
},
|
||||
time::{Duration, Instant},
|
||||
};
|
||||
|
@ -37,8 +37,6 @@ use {
|
|||
WireMessages, BatchRx,
|
||||
};
|
||||
|
||||
// The HoneyBadger batch size.
|
||||
const DEFAULT_BATCH_SIZE: usize = 200;
|
||||
// The number of random transactions to generate per interval.
|
||||
const DEFAULT_TXN_GEN_COUNT: usize = 5;
|
||||
// The interval between randomly generated transactions.
|
||||
|
@ -56,7 +54,6 @@ const DEFAULT_OUTPUT_EXTRA_DELAY_MS: u64 = 0;
|
|||
// TODO: Convert to builder.
|
||||
#[derive(Debug, Clone, PartialEq, Eq)]
|
||||
pub struct Config {
|
||||
pub batch_size: usize,
|
||||
pub txn_gen_count: usize,
|
||||
pub txn_gen_interval: u64,
|
||||
// TODO: Make this a range:
|
||||
|
@ -69,7 +66,6 @@ pub struct Config {
|
|||
impl Config {
|
||||
pub fn with_defaults() -> Config {
|
||||
Config {
|
||||
batch_size: DEFAULT_BATCH_SIZE,
|
||||
txn_gen_count: DEFAULT_TXN_GEN_COUNT,
|
||||
txn_gen_interval: DEFAULT_TXN_GEN_INTERVAL,
|
||||
txn_gen_bytes: DEFAULT_TXN_GEN_BYTES,
|
||||
|
@ -481,4 +477,30 @@ impl<T: Contribution> Hydrabadger<T> {
|
|||
pub(super) fn secret_key(&self) -> &SecretKey {
|
||||
&self.inner.secret_key
|
||||
}
|
||||
|
||||
pub fn to_weak(&self) -> HydrabadgerWeak<T> {
|
||||
HydrabadgerWeak {
|
||||
inner: Arc::downgrade(&self.inner),
|
||||
handler: Arc::downgrade(&self.handler),
|
||||
batch_rx: Arc::downgrade(&self.batch_rx),
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
pub struct HydrabadgerWeak<T: Contribution> {
|
||||
inner: Weak<Inner<T>>,
|
||||
handler: Weak<Mutex<Option<Handler<T>>>>,
|
||||
batch_rx: Weak<Mutex<Option<BatchRx<T>>>>,
|
||||
}
|
||||
|
||||
impl<T: Contribution> HydrabadgerWeak<T> {
|
||||
pub fn upgrade(self) -> Option<Hydrabadger<T>> {
|
||||
self.inner.upgrade() .and_then(|inner| {
|
||||
self.handler.upgrade().and_then(|handler| {
|
||||
self.batch_rx.upgrade().and_then(|batch_rx|{
|
||||
Some(Hydrabadger { inner, handler, batch_rx })
|
||||
})
|
||||
})
|
||||
})
|
||||
}
|
||||
}
|
|
@ -13,7 +13,7 @@ use hbbft::{
|
|||
use std;
|
||||
use {Input, Message, Uid};
|
||||
|
||||
pub use self::hydrabadger::{Config, Hydrabadger};
|
||||
pub use self::hydrabadger::{Config, Hydrabadger, HydrabadgerWeak};
|
||||
pub use self::state::StateDsct;
|
||||
|
||||
// Number of times to attempt wire message re-send.
|
||||
|
|
|
@ -68,7 +68,7 @@ use hbbft::{
|
|||
};
|
||||
|
||||
pub use blockchain::{Blockchain, MiningError};
|
||||
pub use hydrabadger::{Config, Hydrabadger};
|
||||
pub use hydrabadger::{Config, Hydrabadger, HydrabadgerWeak};
|
||||
// TODO: Create a separate, library-wide error type.
|
||||
pub use hydrabadger::Error;
|
||||
pub use hbbft::dynamic_honey_badger::Batch;
|
||||
|
|
Loading…
Reference in New Issue