more enhancements
This commit is contained in:
@ -363,7 +363,7 @@ impl Bank {
|
|||||||
res
|
res
|
||||||
}
|
}
|
||||||
|
|
||||||
fn process_entry(&self, entry: Entry) -> Result<()> {
|
pub fn process_entry(&self, entry: Entry) -> Result<()> {
|
||||||
if !entry.transactions.is_empty() {
|
if !entry.transactions.is_empty() {
|
||||||
for result in self.process_transactions(entry.transactions) {
|
for result in self.process_transactions(entry.transactions) {
|
||||||
result?;
|
result?;
|
||||||
|
@ -93,13 +93,40 @@ fn main() {
|
|||||||
stdout().write_all(b"\n]}\n").expect("close array");
|
stdout().write_all(b"\n]}\n").expect("close array");
|
||||||
}
|
}
|
||||||
("verify", _) => {
|
("verify", _) => {
|
||||||
|
if head < 2 {
|
||||||
|
eprintln!("verify requires at least 2 entries to run");
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
let bank = Bank::default();
|
let bank = Bank::default();
|
||||||
if head != <usize>::max_value() {
|
|
||||||
let entries = entries.map(|entry| entry.unwrap()).take(head);
|
{
|
||||||
bank.process_ledger(entries).expect("process_ledger");
|
let genesis = match read_ledger(ledger_path, true) {
|
||||||
} else {
|
Ok(entries) => entries,
|
||||||
let entries = entries.map(|entry| entry.unwrap());
|
Err(err) => {
|
||||||
bank.process_ledger(entries).expect("process_ledger");
|
eprintln!("Failed to open ledger at {}: {}", ledger_path, err);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
};
|
||||||
|
|
||||||
|
let genesis = genesis.take(2).map(|e| e.unwrap());
|
||||||
|
|
||||||
|
if let Err(e) = bank.process_ledger(genesis) {
|
||||||
|
eprintln!("verify failed at genesis err: {:?}", e);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
|
let entries = entries.map(|e| e.unwrap());
|
||||||
|
|
||||||
|
for (i, entry) in entries.enumerate() {
|
||||||
|
if i >= head {
|
||||||
|
break;
|
||||||
|
}
|
||||||
|
if i >= 2 {
|
||||||
|
if let Err(e) = bank.process_entry(entry) {
|
||||||
|
eprintln!("verify failed at entry[{}], err: {:?}", i, e);
|
||||||
|
exit(1);
|
||||||
|
}
|
||||||
|
}
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
("", _) => {
|
("", _) => {
|
||||||
|
Reference in New Issue
Block a user