Browse Source

Use explicit 'dyn' for trait objects

master
Roman Zeyde 6 years ago
parent
commit
e2cca9b85b
  1. 2
      src/app.rs
  2. 2
      src/config.rs
  3. 6
      src/daemon.rs
  4. 8
      src/index.rs
  5. 2
      src/mempool.rs
  6. 12
      src/query.rs
  7. 2
      src/store.rs

2
src/app.rs

@ -31,7 +31,7 @@ impl App {
&self.store &self.store
} }
// TODO: use index for queries. // TODO: use index for queries.
pub fn read_store(&self) -> &store::ReadStore { pub fn read_store(&self) -> &dyn store::ReadStore {
&self.store &self.store
} }
pub fn index(&self) -> &index::Index { pub fn index(&self) -> &index::Index {

2
src/config.rs

@ -241,7 +241,7 @@ impl Config {
config config
} }
pub fn cookie_getter(&self) -> Arc<CookieGetter> { pub fn cookie_getter(&self) -> Arc<dyn CookieGetter> {
if let Some(ref value) = self.cookie { if let Some(ref value) = self.cookie {
Arc::new(StaticCookie { Arc::new(StaticCookie {
value: value.as_bytes().to_vec(), value: value.as_bytes().to_vec(),

6
src/daemon.rs

@ -150,7 +150,7 @@ pub trait CookieGetter: Send + Sync {
struct Connection { struct Connection {
tx: TcpStream, tx: TcpStream,
rx: Lines<BufReader<TcpStream>>, rx: Lines<BufReader<TcpStream>>,
cookie_getter: Arc<CookieGetter>, cookie_getter: Arc<dyn CookieGetter>,
addr: SocketAddr, addr: SocketAddr,
signal: Waiter, signal: Waiter,
} }
@ -171,7 +171,7 @@ fn tcp_connect(addr: SocketAddr, signal: &Waiter) -> Result<TcpStream> {
impl Connection { impl Connection {
fn new( fn new(
addr: SocketAddr, addr: SocketAddr,
cookie_getter: Arc<CookieGetter>, cookie_getter: Arc<dyn CookieGetter>,
signal: Waiter, signal: Waiter,
) -> Result<Connection> { ) -> Result<Connection> {
let conn = tcp_connect(addr, &signal)?; let conn = tcp_connect(addr, &signal)?;
@ -300,7 +300,7 @@ impl Daemon {
pub fn new( pub fn new(
daemon_dir: &PathBuf, daemon_dir: &PathBuf,
daemon_rpc_addr: SocketAddr, daemon_rpc_addr: SocketAddr,
cookie_getter: Arc<CookieGetter>, cookie_getter: Arc<dyn CookieGetter>,
network: Network, network: Network,
signal: Waiter, signal: Waiter,
blocktxids_cache: Arc<BlockTxIDsCache>, blocktxids_cache: Arc<BlockTxIDsCache>,

8
src/index.rs

@ -221,7 +221,7 @@ pub fn last_indexed_block(blockhash: &Sha256dHash) -> Row {
} }
} }
pub fn read_indexed_blockhashes(store: &ReadStore) -> HashSet<Sha256dHash> { pub fn read_indexed_blockhashes(store: &dyn ReadStore) -> HashSet<Sha256dHash> {
let mut result = HashSet::new(); let mut result = HashSet::new();
for row in store.scan(b"B") { for row in store.scan(b"B") {
let key: BlockKey = bincode::deserialize(&row.key).unwrap(); let key: BlockKey = bincode::deserialize(&row.key).unwrap();
@ -230,7 +230,7 @@ pub fn read_indexed_blockhashes(store: &ReadStore) -> HashSet<Sha256dHash> {
result result
} }
fn read_indexed_headers(store: &ReadStore) -> HeaderList { fn read_indexed_headers(store: &dyn ReadStore) -> HeaderList {
let latest_blockhash: Sha256dHash = match store.get(b"L") { let latest_blockhash: Sha256dHash = match store.get(b"L") {
// latest blockheader persisted in the DB. // latest blockheader persisted in the DB.
Some(row) => deserialize(&row).unwrap(), Some(row) => deserialize(&row).unwrap(),
@ -336,7 +336,7 @@ pub struct Index {
impl Index { impl Index {
pub fn load( pub fn load(
store: &ReadStore, store: &dyn ReadStore,
daemon: &Daemon, daemon: &Daemon,
metrics: &Metrics, metrics: &Metrics,
batch_size: usize, batch_size: usize,
@ -352,7 +352,7 @@ impl Index {
}) })
} }
pub fn reload(&self, store: &ReadStore) { pub fn reload(&self, store: &dyn ReadStore) {
let mut headers = self.headers.write().unwrap(); let mut headers = self.headers.write().unwrap();
*headers = read_indexed_headers(store); *headers = read_indexed_headers(store);
} }

2
src/mempool.rs

@ -186,7 +186,7 @@ impl Tracker {
&self.histogram &self.histogram
} }
pub fn index(&self) -> &ReadStore { pub fn index(&self) -> &dyn ReadStore {
&self.index &self.index
} }

12
src/query.rs

@ -143,13 +143,13 @@ fn create_merkle_branch_and_root(
} }
// TODO: the functions below can be part of ReadStore. // TODO: the functions below can be part of ReadStore.
fn txrow_by_txid(store: &ReadStore, txid: &Sha256dHash) -> Option<TxRow> { fn txrow_by_txid(store: &dyn ReadStore, txid: &Sha256dHash) -> Option<TxRow> {
let key = TxRow::filter_full(&txid); let key = TxRow::filter_full(&txid);
let value = store.get(&key)?; let value = store.get(&key)?;
Some(TxRow::from_row(&Row { key, value })) Some(TxRow::from_row(&Row { key, value }))
} }
fn txrows_by_prefix(store: &ReadStore, txid_prefix: HashPrefix) -> Vec<TxRow> { fn txrows_by_prefix(store: &dyn ReadStore, txid_prefix: HashPrefix) -> Vec<TxRow> {
store store
.scan(&TxRow::filter_prefix(txid_prefix)) .scan(&TxRow::filter_prefix(txid_prefix))
.iter() .iter()
@ -157,7 +157,7 @@ fn txrows_by_prefix(store: &ReadStore, txid_prefix: HashPrefix) -> Vec<TxRow> {
.collect() .collect()
} }
fn txids_by_script_hash(store: &ReadStore, script_hash: &[u8]) -> Vec<HashPrefix> { fn txids_by_script_hash(store: &dyn ReadStore, script_hash: &[u8]) -> Vec<HashPrefix> {
store store
.scan(&TxOutRow::filter(script_hash)) .scan(&TxOutRow::filter(script_hash))
.iter() .iter()
@ -166,7 +166,7 @@ fn txids_by_script_hash(store: &ReadStore, script_hash: &[u8]) -> Vec<HashPrefix
} }
fn txids_by_funding_output( fn txids_by_funding_output(
store: &ReadStore, store: &dyn ReadStore,
txn_id: &Sha256dHash, txn_id: &Sha256dHash,
output_index: usize, output_index: usize,
) -> Vec<HashPrefix> { ) -> Vec<HashPrefix> {
@ -225,7 +225,7 @@ impl Query {
fn load_txns_by_prefix( fn load_txns_by_prefix(
&self, &self,
store: &ReadStore, store: &dyn ReadStore,
prefixes: Vec<HashPrefix>, prefixes: Vec<HashPrefix>,
) -> Result<Vec<TxnHeight>> { ) -> Result<Vec<TxnHeight>> {
let mut txns = vec![]; let mut txns = vec![];
@ -244,7 +244,7 @@ impl Query {
fn find_spending_input( fn find_spending_input(
&self, &self,
store: &ReadStore, store: &dyn ReadStore,
funding: &FundingOutput, funding: &FundingOutput,
) -> Result<Option<SpendingInput>> { ) -> Result<Option<SpendingInput>> {
let spending_txns: Vec<TxnHeight> = self.load_txns_by_prefix( let spending_txns: Vec<TxnHeight> = self.load_txns_by_prefix(

2
src/store.rs

@ -188,7 +188,7 @@ pub fn full_compaction(store: DBStore) -> DBStore {
store store
} }
pub fn is_fully_compacted(store: &ReadStore) -> bool { pub fn is_fully_compacted(store: &dyn ReadStore) -> bool {
let marker = store.get(&full_compaction_marker().key); let marker = store.get(&full_compaction_marker().key);
marker.is_some() marker.is_some()
} }

Loading…
Cancel
Save