void wallet_db::import_from_json( const path& filename ) { try { FC_ASSERT( fc::exists( filename ) ); FC_ASSERT( is_open() ); auto records = fc::json::from_file<std::vector<generic_wallet_record>>( filename ); for( const auto& record : records ) { try { store_and_reload_generic_record( record ); // Prevent hanging on large wallets fc::usleep( fc::milliseconds( 1 ) ); } catch( const fc::canceled_exception& ) { throw; } catch( const fc::exception& e ) { elog( "Error loading wallet record:\n${r}\nReason: ${e}", ("e",e.to_detail_string())("r",record) ); switch( wallet_record_type_enum( record.type ) ) { case master_key_record_type: case key_record_type: throw; default: break; } } } } FC_CAPTURE_AND_RETHROW( (filename) ) }
void wallet_db::import_from_json( const path& filename ) { try { FC_ASSERT( fc::exists( filename ) ); FC_ASSERT( is_open() ); auto records = fc::json::from_file<std::vector<generic_wallet_record>>( filename ); for( const auto& record : records ) store_and_reload_generic_record( record ); } FC_CAPTURE_AND_RETHROW( (filename) ) }
void store_and_reload_record( T& record_to_store, const bool sync = false ) { if( record_to_store.wallet_record_index == 0 ) record_to_store.wallet_record_index = new_wallet_record_index(); store_and_reload_generic_record( generic_wallet_record( record_to_store ), sync ); }