Ignore:
Timestamp:
04/03/09 21:17:30 (11 years ago)
Author:
Eoin
Message:

Cleaning up torrent removal code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/halSession.hpp

    r737 r739  
    833833 
    834834        void add_torrent(wpath file, wpath saveDirectory, bool startStopped, bool managed, bit::allocations alloc,  
    835                         boost::filesystem::wpath moveToDirectory, bool useMoveTo)  
     835                        boost::filesystem::wpath moveToDirectory)  
    836836        { 
    837837                try  
    838838                {        
    839                 torrent_internal_ptr TIp; 
     839//              torrent_internal_ptr TIp; 
    840840 
    841841                std::pair<std::string, std::string> names = extract_names(file); 
    842842                wstring xml_name = from_utf8(names.first) + L".xml"; 
    843843 
    844                 if (false && fs::exists(file.parent_path()/xml_name)) 
     844/*              if (false && fs::exists(file.parent_path()/xml_name)) 
    845845                { 
    846846                        torrent_standalone tsa; 
     
    857857                        } 
    858858                } 
    859  
    860                 if (!TIp) 
    861                 { 
    862                         if (useMoveTo) 
    863                                 TIp.reset(new torrent_internal(file, saveDirectory, alloc, moveToDirectory));            
    864                         else 
    865                                 TIp.reset(new torrent_internal(file, saveDirectory, alloc)); 
    866  
     859*/ 
     860                torrent_internal_ptr TIp = 
     861                        the_torrents_.create_torrent(file, saveDirectory, alloc, moveToDirectory); 
     862 
     863                if(TIp) 
     864                { 
    867865                        TIp->set_managed(managed); 
    868866                        TIp->set_transfer_speed(bittorrent().default_torrent_download(), bittorrent().default_torrent_upload()); 
    869867                        TIp->set_connection_limit(bittorrent().default_torrent_max_connections(), bittorrent().default_torrent_max_uploads()); 
    870868                        TIp->set_resolve_countries(resolve_countries_); 
    871                 } 
    872                  
    873                 std::pair<torrent_manager::torrent_by_name::iterator, bool> p = 
    874                         the_torrents_.insert(TIp); 
    875                  
    876                 if (p.second) 
    877                 { 
    878                         torrent_internal_ptr me = the_torrents_.get(TIp->name());                
    879                          
     869 
     870 
    880871                        if (!startStopped)  
    881                                 me->add_to_session(); 
     872                                TIp->add_to_session(); 
    882873                        else 
    883                                 me->set_state_stopped(); 
     874                                TIp->set_state_stopped(); 
    884875                } 
    885876                 
     
    890881                                new EventTorrentException(event_logger::critical, event_logger::torrentException,  
    891882                                        std::string(e.what()), to_utf8(file.string()), std::string("addTorrent")))); 
     883                } 
     884        } 
     885 
     886        void remove_to_bin(boost::shared_ptr<file_details_vec> files, wpath path) 
     887        { 
     888                foreach(file_details file, *files) 
     889                { 
     890                        std::wstring file_location = (wform(L"File %1%\\%2%\\%3%")  
     891                                % path.file_string() % file.branch % file.filename).str(); 
     892 
     893                        HAL_DEV_MSG(wform(L"File %1%\\%2%\\%3%") % path.file_string() % file.branch % file.filename); 
    892894                } 
    893895        } 
     
    953955                try { 
    954956                event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Removing Torrent."))); 
    955                  
     957 
     958                boost::shared_ptr<file_details_vec> files = boost::shared_ptr<file_details_vec>(new file_details_vec());                 
    956959                torrent_internal_ptr pTI = the_torrents_.get(filename); 
     960 
     961        //      pTI->get_file_details(*files);           
     962        //      thread_t t(bind(&bit_impl::remove_to_bin, this, files, pTI->get_save_directory())); 
     963 
    957964                libt::torrent_handle handle = pTI->handle(); 
    958965                the_torrents_.erase(filename); 
    959966                 
    960         //      thread_t t(bind(&bit_impl::removal_thread, this, pTI, false));   
     967                event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Removed, started thread."))); 
    961968                 
    962969                } HAL_GENERIC_TORRENT_EXCEPTION_CATCH(filename, "remove_torrent") 
    963970        } 
    964971 
    965         void remove_torrent_wipe_files(const std::wstring& filename) 
     972        void remove_torrent_wipe_files(const std::wstring& filename, remove_files fn) 
    966973        { 
    967974                try { 
    968975                event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Removing Torrent and files."))); 
    969                  
     976 
     977                boost::shared_ptr<file_details_vec> files = boost::shared_ptr<file_details_vec>(new file_details_vec());                 
    970978                torrent_internal_ptr pTI = the_torrents_.get(filename); 
    971                 libt::torrent_handle handle = pTI->handle(); 
     979 
     980                pTI->get_file_details(*files); 
     981                thread_t t(bind(fn, pTI->get_save_directory(), files)); 
     982 
     983                pTI->clear_resume_data(); 
     984                pTI->delete_torrent_file(); 
     985 
    972986                the_torrents_.erase(filename); 
    973987                 
    974         //      thread_t t(bind(&bit_impl::removal_thread, this, pTI, true));    
     988                event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Removed, started thread."))); 
    975989                 
    976990                } HAL_GENERIC_TORRENT_EXCEPTION_CATCH(filename, "remove_torrent_wipe_files") 
Note: See TracChangeset for help on using the changeset viewer.