diff options
author | Riccardo Spagni <ric@spagni.net> | 2015-05-16 15:54:51 +0200 |
---|---|---|
committer | Riccardo Spagni <ric@spagni.net> | 2015-05-16 15:54:54 +0200 |
commit | 2dc1cd9ae6c55f8135111e5e05ca3fb0b3829272 (patch) | |
tree | a1a2a567dc2a224227a98a683624bd28ea837910 /src/blockchain_utilities/blockchain_import.cpp | |
parent | Merge pull request #284 (diff) | |
parent | Allow BlockchainLMDB to be opened in read-only mode (diff) | |
download | monero-2dc1cd9ae6c55f8135111e5e05ca3fb0b3829272.tar.xz |
Merge pull request #286
d35bffb Allow BlockchainLMDB to be opened in read-only mode (warptangent)
73d3511 Rename "--block-number" option to "--block-stop" (warptangent)
2b2dbd8 Check if chunk size is zero instead of negative (warptangent)
Diffstat (limited to 'src/blockchain_utilities/blockchain_import.cpp')
-rw-r--r-- | src/blockchain_utilities/blockchain_import.cpp | 51 |
1 files changed, 23 insertions, 28 deletions
diff --git a/src/blockchain_utilities/blockchain_import.cpp b/src/blockchain_utilities/blockchain_import.cpp index 6777cc8fb..fc00cdcba 100644 --- a/src/blockchain_utilities/blockchain_import.cpp +++ b/src/blockchain_utilities/blockchain_import.cpp @@ -169,7 +169,7 @@ int pop_blocks(FakeCore& simple_core, int num_blocks) } template <typename FakeCore> -int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint64_t stop_height=0) +int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint64_t block_stop=0) { #if !defined(BLOCKCHAIN_DB) static_assert(std::is_same<fake_core_memory, FakeCore>::value || std::is_same<fake_core_lmdb, FakeCore>::value, @@ -230,15 +230,15 @@ int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint6 // Note that a new blockchain will start with block number 0 (total blocks: 1) // due to genesis block being added at initialization. - if (! stop_height) + if (! block_stop) { - stop_height = total_source_blocks - 1; + block_stop = total_source_blocks - 1; } // These are what we'll try to use, and they don't have to be a determination // from source and destination blockchains, but those are the defaults. LOG_PRINT_L0("start block: " << start_height << " stop block: " << - stop_height); + block_stop); bool use_batch = false; if (opt_batch) @@ -277,7 +277,7 @@ int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint6 { throw std::runtime_error("Error in deserialization of chunk size"); } - LOG_PRINT_L1("chunk_size: " << chunk_size); + LOG_PRINT_L3("chunk_size: " << chunk_size); if (chunk_size > BUFFER_SIZE) { @@ -288,8 +288,8 @@ int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint6 { LOG_PRINT_L0("NOTE: chunk_size " << chunk_size << " > 100000"); } - else if (chunk_size < 0) { - LOG_PRINT_L0("ERROR: chunk_size " << chunk_size << " < 0"); + else if (chunk_size == 0) { + LOG_PRINT_L0("ERROR: chunk_size == 0"); return 2; } import_file.read(buffer_block, chunk_size); @@ -306,10 +306,10 @@ int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint6 h += NUM_BLOCKS_PER_CHUNK; continue; } - if (h > stop_height) + if (h > block_stop) { std::cout << refresh_string << "block " << h-1 - << " / " << stop_height + << " / " << block_stop << std::flush; std::cout << ENDL << ENDL; LOG_PRINT_L0("Specified block number reached - stopping. block: " << h-1 << " total blocks: " << h); @@ -345,7 +345,7 @@ int import_from_file(FakeCore& simple_core, std::string& import_file_path, uint6 if ((h-1) % progress_interval == 0) { std::cout << refresh_string << "block " << h-1 - << " / " << stop_height + << " / " << block_stop << std::flush; } @@ -531,7 +531,7 @@ int main(int argc, char* argv[]) uint32_t log_level = LOG_LEVEL_0; uint64_t num_blocks = 0; - uint64_t block_height = 0; + uint64_t block_stop = 0; std::string dirname; std::string db_arg_str; @@ -540,10 +540,10 @@ int main(int argc, char* argv[]) po::options_description desc_cmd_only("Command line options"); po::options_description desc_cmd_sett("Command line options and settings options"); - const command_line::arg_descriptor<uint32_t> arg_log_level = {"log-level", "", log_level}; - const command_line::arg_descriptor<uint64_t> arg_block_height = {"block-number", "stop at block number", block_height}; - const command_line::arg_descriptor<uint64_t> arg_batch_size = {"batch-size", "", db_batch_size}; - const command_line::arg_descriptor<uint64_t> arg_pop_blocks = {"pop-blocks", "", num_blocks}; + const command_line::arg_descriptor<uint32_t> arg_log_level = {"log-level", "", log_level}; + const command_line::arg_descriptor<uint64_t> arg_block_stop = {"block-stop", "Stop at block number", block_stop}; + const command_line::arg_descriptor<uint64_t> arg_batch_size = {"batch-size", "", db_batch_size}; + const command_line::arg_descriptor<uint64_t> arg_pop_blocks = {"pop-blocks", "Remove blocks from end of blockchain", num_blocks}; const command_line::arg_descriptor<bool> arg_testnet_on = { "testnet" , "Run on testnet." @@ -567,14 +567,14 @@ int main(int argc, char* argv[]) command_line::add_arg(desc_cmd_sett, command_line::arg_data_dir, default_data_path.string()); command_line::add_arg(desc_cmd_sett, command_line::arg_testnet_data_dir, default_testnet_data_path.string()); - command_line::add_arg(desc_cmd_sett, arg_log_level); - command_line::add_arg(desc_cmd_sett, arg_block_height); - command_line::add_arg(desc_cmd_sett, arg_batch_size); - command_line::add_arg(desc_cmd_sett, arg_pop_blocks); command_line::add_arg(desc_cmd_sett, arg_testnet_on); + command_line::add_arg(desc_cmd_sett, arg_log_level); command_line::add_arg(desc_cmd_sett, arg_database); + command_line::add_arg(desc_cmd_sett, arg_batch_size); + command_line::add_arg(desc_cmd_sett, arg_block_stop); command_line::add_arg(desc_cmd_only, arg_count_blocks); + command_line::add_arg(desc_cmd_only, arg_pop_blocks); command_line::add_arg(desc_cmd_only, command_line::arg_help); // call add_options() directly for these arguments since @@ -602,7 +602,7 @@ int main(int argc, char* argv[]) opt_verify = command_line::get_arg(vm, arg_verify); opt_batch = command_line::get_arg(vm, arg_batch); opt_resume = command_line::get_arg(vm, arg_resume); - block_height = command_line::get_arg(vm, arg_block_height); + block_stop = command_line::get_arg(vm, arg_block_stop); db_batch_size = command_line::get_arg(vm, arg_batch_size); if (command_line::get_arg(vm, command_line::arg_help)) @@ -634,11 +634,6 @@ int main(int argc, char* argv[]) db_batch_size = db_batch_size_verify; } } - uint64_t stop_height = 0; - if (! vm["block-number"].defaulted()) - { - stop_height = block_height; - } std::vector<std::string> db_engines {"memory", "lmdb"}; @@ -712,12 +707,12 @@ int main(int argc, char* argv[]) if (db_engine == "lmdb") { fake_core_lmdb simple_core(dirname, opt_testnet, opt_batch, mdb_flags); - import_from_file(simple_core, import_file_path, stop_height); + import_from_file(simple_core, import_file_path, block_stop); } else if (db_engine == "memory") { fake_core_memory simple_core(dirname, opt_testnet); - import_from_file(simple_core, import_file_path, stop_height); + import_from_file(simple_core, import_file_path, block_stop); } else { @@ -747,7 +742,7 @@ int main(int argc, char* argv[]) exit(0); } - import_from_file(simple_core, import_file_path, stop_height); + import_from_file(simple_core, import_file_path, block_stop); #endif } |