Ignore:
Timestamp:
01/17/09 10:50:51 (11 years ago)
Author:
Eoin
Message:

More advanced state machine being implemented for torrent_internal.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/halTorrentIntStates.cpp

    r683 r686  
    77#include "stdAfx.hpp" 
    88 
    9 #include "halTorrentInternal.hpp" 
     9#include "halTorrentIntStates.hpp" 
    1010 
    1111namespace hal 
    1212{ 
    1313 
     14// -------- in_the_session -------- 
     15 
    1416in_the_session::in_the_session(base_type::my_context ctx) : 
    1517        base_type::my_base(ctx) 
     
    2426        torrent_internal& t_i = context<torrent_internal>(); 
    2527 
    26         HAL_DEV_MSG(L"removing handle from session"); 
    27         t_i.the_session_->remove_torrent(t_i.handle_); 
    28         t_i.in_session_ = false; 
    29  
    30         assert(!t_i.in_session());       
     28        if (evt.write_data()) 
     29        { 
     30                HAL_DEV_MSG(L"requesting resume data"); 
     31                t_i.save_resume_data();  
     32 
     33                return transit< leaving_session >(); 
     34        } 
     35        else 
     36        { 
     37                HAL_DEV_MSG(L"removing handle from session"); 
     38                t_i.remove_torrent(); 
     39 
     40                assert(!t_i.in_session());       
     41                HAL_DEV_MSG(L"Removed from session!"); 
     42 
     43                return transit< out_of_session >(); 
     44        } 
     45} 
     46 
     47in_the_session::~in_the_session() 
     48{ 
     49        TORRENT_STATE_LOG(L"Exiting ~in_the_session()"); 
     50} 
     51 
     52// -------- leaving_session -------- 
     53 
     54leaving_session::leaving_session(base_type::my_context ctx) : 
     55        base_type::my_base(ctx) 
     56{ 
     57        TORRENT_STATE_LOG(L"Entering leaving_session()"); 
     58} 
     59 
     60leaving_session::~leaving_session() 
     61{ 
     62        TORRENT_STATE_LOG(L"Exiting ~leaving_session()"); 
     63} 
     64 
     65sc::result leaving_session::react(const ev_add_to_session& evt) 
     66{ 
     67        torrent_internal& t_i = context<torrent_internal>(); 
     68        assert(t_i.in_session()); 
     69 
     70        return transit< in_the_session >(); 
     71} 
     72 
     73sc::result leaving_session::react(const ev_resume_data_written& evt) 
     74{ 
     75        torrent_internal& t_i = context<torrent_internal>(); 
     76 
     77        HAL_DEV_MSG(L"Removing handle from session"); 
     78        t_i.remove_torrent(); 
    3179        HAL_DEV_MSG(L"Removed from session!"); 
    3280 
     
    3482} 
    3583 
    36 in_the_session::~in_the_session() 
    37 { 
    38         TORRENT_STATE_LOG(L"Exiting ~in_the_session()"); 
    39 } 
     84// -------- out_of_session -------- 
    4085 
    4186out_of_session::out_of_session(base_type::my_context ctx) : 
     
    81126        assert(t_i.handle_.is_valid()); 
    82127        t_i.in_session_ = true; 
    83          
    84 //      clear_resume_data(); 
    85 //      handle_.force_reannounce(); 
    86128 
    87129        return transit< in_the_session >(); 
    88130} 
    89131 
    90 paused::paused() 
     132active::active(base_type::my_context ctx) : 
     133        base_type::my_base(ctx) 
     134{ 
     135        TORRENT_STATE_LOG(L"Entering active()"); 
     136} 
     137 
     138active::~active() 
     139{ 
     140        TORRENT_STATE_LOG(L"Exiting ~active()"); 
     141} 
     142 
     143sc::result active::react(const ev_pause& evt) 
     144{ 
     145        context<torrent_internal>().handle_.pause(); 
     146 
     147        return transit< pausing >(); 
     148} 
     149 
     150pausing::pausing() 
     151{ 
     152        TORRENT_STATE_LOG(L"Entering pausing()"); 
     153} 
     154 
     155pausing::~pausing() 
     156{ 
     157        TORRENT_STATE_LOG(L"Exiting ~pausing()"); 
     158} 
     159 
     160paused::paused(base_type::my_context ctx) : 
     161        base_type::my_base(ctx) 
    91162{ 
    92163        TORRENT_STATE_LOG(L"Entering paused()"); 
     
    98169} 
    99170 
    100 active::active() 
    101 { 
    102         TORRENT_STATE_LOG(L"Entering active()"); 
    103 } 
    104  
    105 active::~active() 
    106 { 
    107         TORRENT_STATE_LOG(L"Exiting ~active()"); 
     171stopping::stopping() 
     172{ 
     173        TORRENT_STATE_LOG(L"Entering stopping()"); 
     174} 
     175 
     176stopping::~stopping() 
     177{ 
     178        TORRENT_STATE_LOG(L"Exiting ~stopping()"); 
     179} 
     180 
     181stopped::stopped() 
     182{ 
     183        TORRENT_STATE_LOG(L"Entering stopped()"); 
     184} 
     185 
     186stopped::~stopped() 
     187{ 
     188        TORRENT_STATE_LOG(L"Exiting ~stopped()"); 
     189} 
     190 
     191resume_data_waiting::resume_data_waiting() 
     192{ 
     193        TORRENT_STATE_LOG(L"Entering resume_data_waiting()"); 
     194} 
     195 
     196resume_data_waiting::~resume_data_waiting() 
     197{ 
     198        TORRENT_STATE_LOG(L"Exiting ~resume_data_waiting()"); 
     199} 
     200 
     201resume_data_idling::resume_data_idling() 
     202{ 
     203        TORRENT_STATE_LOG(L"Entering resume_data_idling()"); 
     204} 
     205 
     206resume_data_idling::~resume_data_idling() 
     207{ 
     208        TORRENT_STATE_LOG(L"Exiting ~resume_data_idling()"); 
    108209} 
    109210 
Note: See TracChangeset for help on using the changeset viewer.