Changeset 740


Ignore:
Timestamp:
04/04/09 12:04:59 (11 years ago)
Author:
Eoin
Message:

Torrents removingly cleanly.

Location:
trunk/src
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/halSession.cpp

    r730 r740  
    718718                torrent_internal_ptr get(libt::torrent_handle h) const  
    719719                {  
    720                         return bit_impl_.the_torrents_.get(from_utf8_safe(h.get_torrent_info().name()));  
     720                        torrent_internal_ptr p = bit_impl_.the_torrents_.get(from_utf8_safe(h.get_torrent_info().name()));  
     721 
     722                        if (p) 
     723                                return p; 
     724                        else 
     725                                throw bit::null_torrent(); 
    721726                } 
    722727         
     
    762767//                      handler(*p_alert); 
    763768                } 
     769                catch(bit::null_torrent& e) 
     770                { 
     771                        // These are logged as debug because they are rarely important to act on! 
     772                        event_log.post(shared_ptr<EventDetail>(\ 
     773                                new EventMsg(L"null_torrent exception", event_logger::info))); 
     774                } 
    764775                catch(std::exception& e) 
    765776                { 
  • trunk/src/halTorrentIntStates.cpp

    r734 r740  
    1919        TORRENT_STATE_LOG(L"Entering in_the_session()"); 
    2020 
    21         assert(context<torrent_internal>().in_session()); 
    22         context<torrent_internal>().apply_settings(); 
     21        torrent_internal& t_i = context<torrent_internal>(); 
     22//      preserve_me_ = t_i.own_weak_ptr_.lock(); 
     23 
     24        assert(t_i.in_session()); 
     25 
     26        t_i.apply_settings(); 
    2327} 
    2428 
     
    231235        TORRENT_STATE_LOG(L"Entering resume_data_waiting()"); 
    232236 
    233         context<torrent_internal>().awaiting_resume_data_ = true; 
    234237        context<torrent_internal>().handle_.save_resume_data(); 
    235238} 
     
    237240resume_data_waiting::~resume_data_waiting() 
    238241{ 
    239         context<torrent_internal>().awaiting_resume_data_ = false; 
    240  
    241242        TORRENT_STATE_LOG(L"Exiting ~resume_data_waiting()"); 
    242243} 
  • trunk/src/halTorrentInternal.hpp

    r739 r740  
    317317                uploads_(-1), \ 
    318318                ratio_(0), \ 
    319                 awaiting_resume_data_(false), \ 
    320319                resolve_countries_(true), \ 
    321320                total_uploaded_(0), \ 
     
    359358        { 
    360359                terminate(); 
     360                TORRENT_STATE_LOG(L"Torrent state machine terminate"); 
    361361        } 
    362362         
     
    812812        } 
    813813 
    814         bool awaiting_resume_data() { return awaiting_resume_data_; } 
     814        bool awaiting_resume_data() { return (state_downcast<const resume_data_waiting*>() != 0); } 
    815815 
    816816        void output_torrent_debug_details() 
     
    889889         
    890890        mutable unsigned state_; 
    891         bool awaiting_resume_data_; 
    892891        int connections_; 
    893892        int uploads_; 
     
    934933}; 
    935934 
    936 //typedef std::map<std::string, TorrentInternalOld> TorrentMap; 
    937 //typedef std::pair<std::string, TorrentInternalOld> TorrentPair; 
    938935 
    939936class torrent_manager :  
     
    10091006                iniClass("bittorrent", "torrent_manager", ini) 
    10101007        {} 
     1008 
     1009        ~torrent_manager() 
     1010        { 
     1011                for (torrent_by_name::iterator i= torrents_.get<by_name>().begin(),  
     1012                        e = torrents_.get<by_name>().end(); i!=e; ++i) 
     1013                { 
     1014                        (*i).torrent->stop(); 
     1015                } 
     1016        } 
    10111017         
    10121018/*      std::pair<torrent_by_name::iterator, bool> insert(torrent_internal_ptr t) 
     
    10201026                torrent_internal_ptr t = torrent_internal_ptr(new torrent_internal(filename, saveDirectory, alloc, move_to_directory)); 
    10211027 
    1022                 std::pair<torrent_by_name::iterator, bool> p = insert(torrent_holder(t)); 
    1023  
    1024                 if (!p.second) t.reset(); 
     1028                std::pair<torrent_by_name::iterator, bool> p = torrents_.get<by_name>().insert(torrent_holder(t)); 
     1029 
     1030                if (!p.second)  
     1031                        t.reset(); 
     1032                else 
     1033                        t->initialize_state_machine(t); 
    10251034 
    10261035                return t;                        
    10271036        } 
    10281037 
    1029         std::pair<torrent_by_name::iterator, bool> insert(const torrent_holder& h) 
    1030         { 
    1031         //      torrent->initialize_state_machine(torrent); 
    1032  
    1033                 return torrents_.get<by_name>().insert(h); 
    1034         } 
    1035  
    10361038        torrent_internal_ptr get_by_file(const wstring& filename) 
    10371039        { 
     
    10721074                torrent_by_name::iterator it = torrents_.get<by_name>().find(name); 
    10731075                 
    1074                 if (it != torrents_.get<by_name>().end()) 
     1076                TORRENT_STATE_LOG(L"Torrent manager erasing"); 
     1077 
     1078        /*      if (it != torrents_.get<by_name>().end()) 
     1079                { 
     1080                        TORRENT_STATE_LOG(L"Torrent manager requesting stop"); 
    10751081                        (*it).torrent->stop(); 
    1076  
     1082                } 
     1083        */ 
    10771084                return torrents_.get<by_name>().erase(name); 
    10781085        } 
Note: See TracChangeset for help on using the changeset viewer.