Esempio n. 1
0
   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) ) }
Esempio n. 2
0
   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) ) }
Esempio n. 3
0
 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 );
 }