Ignore:
Timestamp:
07/21/08 01:12:48 (12 years ago)
Author:
Eoin
Message:

Major SortList? de-blobbing.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/halSession.cpp

    r503 r508  
    279279} 
    280280 
     281bool bit_impl::create_torrent(const create_torrent_params& params, fs::wpath out_file, progress_callback fn) 
     282{                
     283try 
     284{ 
     285        libt::file_storage fs; 
     286        libt::file_pool f_pool; 
     287 
     288 
     289        HAL_DEV_MSG(L"Files"); 
     290        for (file_size_pairs_t::const_iterator i = params.file_size_pairs.begin(), e = params.file_size_pairs.end(); 
     291                        i != e; ++i) 
     292        { 
     293                HAL_DEV_MSG(wformat(L"file path: %1%, size: %2%") % (*i).first % (*i).second); 
     294                f_pool->add_file(to_utf8((*i).first.string()), (*i).second); 
     295        } 
     296 
     297        int piece_size = params.piece_size; 
     298        HAL_DEV_MSG(wformat(L"piece size: %1%") % piece_size); 
     299         
     300        libt::create_torrent t(fs, piece_size); 
     301         
     302        boost::scoped_ptr<libt::storage_interface> store( 
     303                libt::default_storage_constructor(t_info, to_utf8(params.root_path.string()), 
     304                        f_pool)); 
     305 
     306        HAL_DEV_MSG(L"Trackers"); 
     307        for (tracker_details_t::const_iterator i = params.trackers.begin(), e = params.trackers.end(); 
     308                        i != e; ++i) 
     309        { 
     310                HAL_DEV_MSG(wformat(L"URL: %1%, Tier: %2%") % (*i).url % (*i).tier); 
     311                t_info->add_tracker(to_utf8((*i).url), (*i).tier); 
     312        } 
     313 
     314        HAL_DEV_MSG(L"Web Seeds"); 
     315        for (web_seed_details_t::const_iterator i = params.web_seeds.begin(), e = params.web_seeds.end(); 
     316                        i != e; ++i) 
     317        { 
     318                HAL_DEV_MSG(wformat(L"URL: %1%") % (*i).url); 
     319                t_info->add_url_seed(to_utf8((*i).url)); 
     320        } 
     321 
     322        HAL_DEV_MSG(L"DHT Nodes"); 
     323        for (dht_node_details_t::const_iterator i = params.dht_nodes.begin(), e = params.dht_nodes.end(); 
     324                        i != e; ++i) 
     325        { 
     326                HAL_DEV_MSG(wformat(L"URL: %1%, port: %2%") % (*i).url % (*i).port); 
     327                t_info->add_node(hal::make_pair(to_utf8((*i).url), (*i).port)); 
     328        } 
     329 
     330        // calculate the hash for all pieces 
     331        int num = t_info->num_pieces(); 
     332        std::vector<char> piece_buf(piece_size); 
     333 
     334        for (int i = 0; i < num; ++i) 
     335        { 
     336                store->read(&piece_buf[0], i, 0, t_info->piece_size(i)); 
     337 
     338                libt::hasher h(&piece_buf[0], t_info->piece_size(i)); 
     339                t_info->set_hash(i, h.final()); 
     340 
     341                if (fn(100*i / num, hal::app().res_wstr(HAL_NEWT_HASHING_PIECES))) 
     342                { 
     343                        // User canceled torrent creation. 
     344 
     345                        hal::event_log.post(shared_ptr<hal::EventDetail>( 
     346                                new hal::EventMsg(hal::app().res_wstr(HAL_NEWT_CREATION_CANCELED), hal::event_logger::info))); 
     347 
     348                        return true; 
     349                } 
     350        } 
     351 
     352        t_info->set_creator(to_utf8(params.creator).c_str()); 
     353        t_info->set_comment(to_utf8(params.comment).c_str()); 
     354         
     355        t_info->set_priv(params.private_torrent); 
     356 
     357        // create the torrent and print it to out 
     358        libt::entry e = t_info->create_torrent(); 
     359        halencode(out_file, e); 
     360        } 
     361        catch(const std::exception& e) 
     362        { 
     363                event_log.post(shared_ptr<EventDetail>( 
     364                        new EventStdException(event_logger::fatal, e, L"create_torrent"))); 
     365        }        
     366 
     367        return false; 
     368} 
     369 
     370 
    281371void bit_impl::start_alert_handler() 
    282372{ 
Note: See TracChangeset for help on using the changeset viewer.