Changeset 748


Ignore:
Timestamp:
04/28/09 20:45:50 (10 years ago)
Author:
Eoin
Message:

Restoring torrents to their proper states fixed.

Location:
trunk
Files:
8 edited

Legend:

Unmodified
Added
Removed
  • trunk/Halite.sln

    r744 r748  
    1414EndProject 
    1515Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "ClientTest", "sln\libtorrent\ClientTest\ClientTest.vcproj", "{67F0629E-04ED-4CF3-BC02-4A49B4919F05}" 
    16         ProjectSection(ProjectDependencies) = postProject 
    17                 {333ECB6F-575B-4B11-BDDA-3E7F7555BAD8} = {333ECB6F-575B-4B11-BDDA-3E7F7555BAD8} 
    18         EndProjectSection 
    19 EndProject 
    20 Project("{8BC9CEB8-8B4A-11D0-8D11-00A0C91BC942}") = "MakeTorrent", "sln\libtorrent\MakeTorrent\MakeTorrent.vcproj", "{95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}" 
    2116        ProjectSection(ProjectDependencies) = postProject 
    2217                {333ECB6F-575B-4B11-BDDA-3E7F7555BAD8} = {333ECB6F-575B-4B11-BDDA-3E7F7555BAD8} 
     
    147142                {67F0629E-04ED-4CF3-BC02-4A49B4919F05}.Release|x64.ActiveCfg = Release|Win32 
    148143                {67F0629E-04ED-4CF3-BC02-4A49B4919F05}.Release|x86.ActiveCfg = Release|Win32 
    149                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Debug|Mixed Platforms.ActiveCfg = Debug|Win32 
    150                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Debug|Mixed Platforms.Build.0 = Debug|Win32 
    151                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Debug|Win32.ActiveCfg = Debug|Win32 
    152                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Debug|x64.ActiveCfg = Debug|Win32 
    153                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Debug|x86.ActiveCfg = Debug|Win32 
    154                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Logging|Mixed Platforms.ActiveCfg = Release|Win32 
    155                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Logging|Mixed Platforms.Build.0 = Release|Win32 
    156                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Logging|Win32.ActiveCfg = Release|Win32 
    157                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Logging|x64.ActiveCfg = Release|Win32 
    158                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Logging|x86.ActiveCfg = Release|Win32 
    159                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Small|Mixed Platforms.ActiveCfg = Release Small|x64 
    160                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Small|Mixed Platforms.Build.0 = Release Small|x64 
    161                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Small|Win32.ActiveCfg = Release Small|Win32 
    162                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Small|x64.ActiveCfg = Release Small|x64 
    163                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release Small|x86.ActiveCfg = Release Small|x64 
    164                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|Mixed Platforms.ActiveCfg = Release|x64 
    165                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|Mixed Platforms.Build.0 = Release|x64 
    166                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|Win32.ActiveCfg = Release|Win32 
    167                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|x64.ActiveCfg = Release|x64 
    168                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|x64.Build.0 = Release|x64 
    169                 {95A9F4A0-8CEF-4A1B-AA6B-94B7E0178253}.Release|x86.ActiveCfg = Release|Win32 
    170144        EndGlobalSection 
    171145        GlobalSection(SolutionProperties) = preSolution 
  • trunk/src/Halite.cpp

    r745 r748  
    6262                        if (!wofs.is_open()) wofs.open(hal::app().get_working_directory()/L"HaliteLog.txt"); 
    6363                         
    64                         wofs << (hal::wform(L"%1% %2%, %3%\r\n")  
     64                        wofs << (hal::wform(L"%1% %2%, %3%\n")  
    6565                                % event->timeStamp() % hal::event_logger::eventLevelToStr(event->level())  
    6666                                % event->msg()).str(); 
  • trunk/src/halSession.hpp

    r746 r748  
    772772                { 
    773773                        TIp->set_managed(managed); 
    774                         TIp->set_transfer_speed(bittorrent::Instance().default_torrent_download(), bittorrent::Instance().default_torrent_upload()); 
    775                         TIp->set_connection_limit(bittorrent::Instance().default_torrent_max_connections(), bittorrent::Instance().default_torrent_max_uploads()); 
     774                        TIp->set_transfer_speed(bittorrent::Instance().default_torrent_download(),  
     775                                bittorrent::Instance().default_torrent_upload()); 
     776                        TIp->set_connection_limit(bittorrent::Instance().default_torrent_max_connections(),  
     777                                bittorrent::Instance().default_torrent_max_uploads()); 
    776778                        TIp->set_resolve_countries(resolve_countries_); 
    777779 
    778  
    779                         if (!startStopped)  
    780                                 TIp->add_to_session(); 
    781                         else 
    782                                 TIp->set_state_stopped(); 
     780                        TIp->start(); 
    783781                } 
    784782                 
     
    918916                                        i != e; ++i) 
    919917                        { 
    920                                 if ((*i).torrent &&  
    921                                                 (((*i).torrent->state() != torrent_details::torrent_stopped  
    922                                                         && (*i).torrent->state() != torrent_details::torrent_paused 
    923                                                         && (*i).torrent->state() != torrent_details::torrent_in_error) 
    924                                                 || (*i).torrent->awaiting_resume_data())) 
     918                                if (    (*i).torrent  
     919                                        &&  
     920                                        (*i).torrent->state() != torrent_details::torrent_in_error 
     921                                        &&  
     922                                        (       (       (*i).torrent->state() != torrent_details::torrent_stopped  
     923                                                        &&  
     924                                                        (*i).torrent->state() != torrent_details::torrent_paused 
     925                                                ) 
     926                                                ||  
     927                                                (*i).torrent->awaiting_resume_data() 
     928                                        ) 
     929                                ) 
    925930                                { 
    926931#                                       ifdef HAL_TORRENT_DEV_MSGES 
  • trunk/src/halTorrentIntEvents.hpp

    r706 r748  
    2121{ 
    2222public: 
    23     ev_remove_from_session(bool write_data) : 
     23        ev_remove_from_session(bool write_data) : 
    2424                write_data_(write_data) 
    25     {} 
    26     
    27     const bool& write_data() const { return write_data_; } 
     25        {} 
     26 
     27const bool& write_data() const { return write_data_; } 
    2828 
    2929private: 
    30     bool write_data_; 
     30        bool write_data_; 
    3131}; 
    3232 
     
    3434{ 
    3535public: 
    36     ev_add_to_session(bool pause) : 
     36        ev_add_to_session(bool pause) : 
    3737                pause_(pause) 
    38     {} 
    39     
    40     const bool& pause() const { return pause_; } 
     38        {} 
     39 
     40        const bool& pause() const { return pause_; } 
    4141 
    4242private: 
    43     bool pause_; 
     43        bool pause_; 
    4444}; 
     45 
     46struct ev_start : sc::event<ev_start> {}; 
    4547 
    4648struct ev_error_alert : sc::event<ev_error_alert> 
    4749{ 
    4850public: 
    49     ev_error_alert(wstring& e) : 
     51        ev_error_alert(wstring& e) : 
    5052                err_(e) 
    51     {} 
    52     
    53     const wstring& error() const { return err_; } 
     53        {} 
     54 
     55        const wstring& error() const { return err_; } 
    5456 
    5557private: 
    56     wstring err_; 
     58        wstring err_; 
    5759}; 
    5860 
  • trunk/src/halTorrentIntStates.cpp

    r747 r748  
    8585        t_i.in_session_ = true; 
    8686 
    87 //      if (evt.pause()) 
     87        if (evt.pause()) 
    8888                return transit< paused >(); 
    89 //      else 
    90 //              return transit< active >(); 
    91  
     89        else 
     90                return transit< active >(); 
     91 
     92} 
     93 
     94sc::result out_of_session::react(const ev_resume& evt) 
     95{ 
     96        post_event(ev_add_to_session(false)); 
     97 
     98        return discard_event(); 
    9299} 
    93100 
     
    223230} 
    224231 
    225 sc::result stopped::react(const ev_resume& evt) 
    226 { 
    227         post_event(ev_add_to_session(false)); 
     232not_started::not_started(base_type::my_context ctx) : 
     233        base_type::my_base(ctx) 
     234{ 
     235        torrent_internal& t_i = context<torrent_internal>(); 
     236        stored_state_ = t_i.state(); 
     237 
     238        TORRENT_STATE_LOG(hal::wform(L"Entering not_started() - %1%") % stored_state_); 
     239} 
     240 
     241not_started::~not_started() 
     242{ 
     243        TORRENT_STATE_LOG(L"Exiting ~not_started()"); 
     244} 
     245 
     246sc::result not_started::react(const ev_start& evt) 
     247{ 
     248        switch (stored_state_) 
     249        { 
     250        case torrent_details::torrent_active: 
     251                post_event(ev_add_to_session(false)); 
     252                break; 
     253 
     254        case torrent_details::torrent_paused: 
     255        case torrent_details::torrent_pausing: 
     256                post_event(ev_add_to_session(true)); 
     257                break; 
     258                 
     259        case torrent_details::torrent_stopped: 
     260        case torrent_details::torrent_stopping:          
     261        case torrent_details::torrent_in_error: 
     262                return transit< stopped >(); 
     263        }; 
    228264 
    229265        return discard_event(); 
  • trunk/src/halTorrentIntStates.hpp

    r693 r748  
    2121namespace sc = boost::statechart; 
    2222 
    23 struct stopped; 
     23struct not_started; 
    2424 
    25 struct out_of_session : sc::state<out_of_session, torrent_internal, mpl::list< stopped > >  
     25struct out_of_session : sc::state<out_of_session, torrent_internal, mpl::list< not_started > >  
    2626{ 
    27         typedef sc::state<out_of_session, torrent_internal, mpl::list< stopped > > base_type; 
     27        typedef sc::state<out_of_session, torrent_internal, mpl::list< not_started > > base_type; 
    2828 
    2929        typedef mpl::list< 
    30                 sc::custom_reaction< ev_add_to_session > 
     30                sc::custom_reaction< ev_add_to_session >, 
     31                sc::custom_reaction< ev_resume > 
    3132        > reactions; 
    3233 
     
    3536 
    3637        sc::result react(const ev_add_to_session& evt); 
     38        sc::result react(const ev_resume& evt); 
    3739}; 
    3840 
     
    159161}; 
    160162 
     163struct not_started : sc::state<not_started, out_of_session> 
     164{ 
     165        typedef sc::state<not_started, out_of_session> base_type; 
     166 
     167        typedef mpl::list< 
     168                sc::custom_reaction< ev_start > 
     169        > reactions; 
     170 
     171        not_started(base_type::my_context ctx); 
     172        ~not_started(); 
     173 
     174        sc::result react(const ev_start& evt); 
     175 
     176private: 
     177        unsigned stored_state_; 
     178}; 
     179 
    161180struct stopped : sc::state<stopped, out_of_session> 
    162181{ 
    163182        typedef sc::state<stopped, out_of_session> base_type; 
    164183 
    165         typedef mpl::list< 
    166                 sc::custom_reaction< ev_resume > 
    167         > reactions; 
    168  
    169184        stopped(base_type::my_context ctx); 
    170185        ~stopped(); 
    171  
    172         sc::result react(const ev_resume& evt); 
    173186}; 
    174187 
  • trunk/src/halTorrentInternal.hpp

    r746 r748  
    430430        void resume() 
    431431        { 
    432                 mutex_t::scoped_lock l(mutex_); 
    433432                HAL_DEV_MSG(hal::wform(L"resume() - %1%") % name_); 
    434433                 
    435                 process_event(ev_resume()); 
     434                locked_process_event(ev_resume()); 
    436435        } 
    437436         
    438437        void pause() 
    439438        { 
    440                 mutex_t::scoped_lock l(mutex_); 
    441439                HAL_DEV_MSG(hal::wform(L"pause() - %1%") % name_); 
    442440                 
    443                 process_event(ev_pause());               
     441                locked_process_event(ev_pause());                
    444442        } 
    445443         
    446444        void stop() 
    447445        { 
    448                 mutex_t::scoped_lock l(mutex_); 
    449446                HAL_DEV_MSG(hal::wform(L"stop() - %1%") % name_); 
    450447                 
    451                 process_event(ev_stop()); 
     448                locked_process_event(ev_stop()); 
     449        } 
     450         
     451        void start() 
     452        { 
     453                HAL_DEV_MSG(hal::wform(L"stop() - %1%") % name_); 
     454                 
     455                locked_process_event(ev_start()); 
    452456        } 
    453457 
     
    779783        unsigned state() const  
    780784        {  
    781                 if (!in_session()) 
     785/*              if (!in_session()) 
    782786                { 
    783787                        if (state_ != torrent_details::torrent_stopped) 
     
    787791                        } 
    788792                } 
    789                  
     793*/               
    790794                return state_;  
    791795        } 
  • trunk/src/halTorrentManager.hpp

    r745 r748  
    113113        } 
    114114 
     115        void start_all() 
     116        { 
     117                for (torrent_by_name::iterator i= torrents_.get<by_name>().begin(),  
     118                        e = torrents_.get<by_name>().end(); i!=e; ++i) 
     119                { 
     120                        (*i).torrent->start(); 
     121                } 
     122        } 
     123 
    115124        torrent_internal_ptr create_torrent(wpath filename, wpath saveDirectory, bit::allocations alloc, wpath move_to_directory=L"") 
    116125        { 
Note: See TracChangeset for help on using the changeset viewer.