Changeset 683 for trunk


Ignore:
Timestamp:
01/14/09 21:28:12 (11 years ago)
Author:
Eoin
Message:
 
Location:
trunk
Files:
3 edited

Legend:

Unmodified
Added
Removed
  • trunk/sln/libtorrent/libtorrent.vcproj

    r666 r683  
    573573                        </File> 
    574574                        <File 
    575                                 RelativePath="..\..\..\..\..\Libraries\libtorrent\libtorrent-0.14\src\sha1.cpp" 
    576                                 > 
    577                         </File> 
    578                         <File 
    579575                                RelativePath="..\..\..\..\..\Libraries\libtorrent\libtorrent-0.14\src\smart_ban.cpp" 
    580576                                > 
  • trunk/src/halTorrentIntStates.cpp

    r682 r683  
    1212{ 
    1313 
    14 in_the_session::in_the_session() 
     14in_the_session::in_the_session(base_type::my_context ctx) : 
     15        base_type::my_base(ctx) 
    1516{ 
    1617        TORRENT_STATE_LOG(L"Entering in_the_session()"); 
    17         torrent_internal& t_i = state_cast<torrent_internal&>(); 
     18 
     19        assert(context<torrent_internal>().in_session()); 
     20} 
     21 
     22sc::result in_the_session::react(const ev_remove_from_session& evt) 
     23{ 
     24        torrent_internal& t_i = context<torrent_internal>(); 
     25 
     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());       
     31        HAL_DEV_MSG(L"Removed from session!"); 
     32 
     33        return transit< out_of_session >(); 
     34} 
     35 
     36in_the_session::~in_the_session() 
     37{ 
     38        TORRENT_STATE_LOG(L"Exiting ~in_the_session()"); 
     39} 
     40 
     41out_of_session::out_of_session(base_type::my_context ctx) : 
     42        base_type::my_base(ctx) 
     43{ 
     44        TORRENT_STATE_LOG(L"Entering out_of_session()"); 
     45} 
     46 
     47out_of_session::~out_of_session() 
     48{ 
     49        TORRENT_STATE_LOG(L"Exiting ~out_of_session()"); 
     50} 
     51 
     52sc::result out_of_session::react(const ev_add_to_session& evt) 
     53{ 
     54        TORRENT_STATE_LOG(L"Entering in_the_session()"); 
     55        torrent_internal& t_i = context<torrent_internal>(); 
    1856 
    1957        assert(!t_i.in_session()); 
     
    3674        p.save_path = path_to_utf8(t_i.save_directory_); 
    3775        p.storage_mode = hal_allocation_to_libt(t_i.allocation_); 
    38         p.paused = paused; 
     76        p.paused = evt.pause(); 
    3977        p.duplicate_is_error = false; 
    4078        p.auto_managed = t_i.managed_; 
     
    4684//      clear_resume_data(); 
    4785//      handle_.force_reannounce(); 
    48 } 
    4986 
    50 in_the_session::~in_the_session() 
    51 { 
    52         TORRENT_STATE_LOG(L"Exiting ~in_the_session()"); 
    53  
    54         torrent_internal& t_i = state_cast<torrent_internal&>(); 
    55  
    56         HAL_DEV_MSG(L"removing handle from session"); 
    57         t_i.the_session_->remove_torrent(t_i.handle_); 
    58         t_i.in_session_ = false; 
    59  
    60         assert(!t_i.in_session());       
    61         HAL_DEV_MSG(L"Removed from session!"); 
    62 } 
    63  
    64 out_of_session::out_of_session() 
    65 { 
    66         TORRENT_STATE_LOG(L"Entering out_of_session()"); 
    67 } 
    68  
    69 out_of_session::~out_of_session() 
    70 { 
    71         TORRENT_STATE_LOG(L"Exiting ~out_of_session()"); 
     87        return transit< in_the_session >(); 
    7288} 
    7389 
  • trunk/src/halTorrentInternal.hpp

    r682 r683  
    4747#include <boost/statechart/simple_state.hpp> 
    4848#include <boost/statechart/transition.hpp> 
     49#include <boost/statechart/state.hpp> 
     50#include <boost/statechart/custom_reaction.hpp> 
     51 
    4952#include <boost/mpl/list.hpp> 
    5053 
     
    6871namespace sc = boost::statechart; 
    6972namespace mpl = boost::mpl; 
     73 
    7074 
    7175inline libt::entry haldecode(const wpath &file)  
     
    284288}; 
    285289 
    286  
    287290struct out_of_session; 
    288291struct in_the_session; 
    289292 
    290 struct ev_add_to_session : sc::event< ev_add_to_session > {}; 
    291 struct ev_remove_from_session : sc::event< ev_remove_from_session > {}; 
     293struct ev_remove_from_session : boost::statechart::event<ev_remove_from_session> 
     294{ 
     295public: 
     296    ev_remove_from_session(bool write_data) : 
     297                write_data_(write_data) 
     298    {} 
     299    
     300    const bool& write_data() const { return write_data_; } 
     301 
     302private: 
     303    bool write_data_; 
     304}; 
     305 
     306struct ev_add_to_session : boost::statechart::event<ev_add_to_session> 
     307{ 
     308public: 
     309    ev_add_to_session(bool pause) : 
     310                pause_(pause) 
     311    {} 
     312    
     313    const bool& pause() const { return pause_; } 
     314 
     315private: 
     316    bool pause_; 
     317}; 
     318 
     319//struct ev_remove_from_session : sc::event< ev_remove_from_session > {}; 
    292320 
    293321struct ev_pause : sc::event< ev_pause > {}; 
     
    583611                assert(the_session_ != 0); 
    584612 
    585                 process_event( ev_add_to_session() ); 
     613                process_event( ev_add_to_session(paused) ); 
    586614                 
    587615                assert(in_session()); 
     
    628656                else 
    629657                {                                
    630                         process_event( ev_remove_from_session() ); 
     658                        process_event( ev_remove_from_session(write_data) ); 
    631659 
    632660                        return true; 
     
    15941622}; 
    15951623 
    1596 struct out_of_session : sc::simple_state<out_of_session, torrent_internal>  
    1597 { 
     1624struct out_of_session : sc::state<out_of_session, torrent_internal>  
     1625{ 
     1626        typedef sc::state<out_of_session, torrent_internal> base_type; 
     1627 
    15981628        typedef mpl::list< 
    1599                 sc::transition< ev_add_to_session, in_the_session >, 
    1600                 sc::transition< ev_remove_from_session, out_of_session > 
     1629                sc::custom_reaction< ev_add_to_session > 
    16011630        > reactions; 
    16021631 
    1603         out_of_session(); 
     1632        out_of_session(base_type::my_context ctx); 
    16041633        ~out_of_session();       
     1634 
     1635        sc::result react(const ev_add_to_session& evt); 
    16051636}; 
    16061637 
     
    16081639struct active; 
    16091640 
    1610 struct in_the_session : sc::simple_state<in_the_session, torrent_internal, paused>  
    1611 { 
     1641struct in_the_session : sc::state<in_the_session, torrent_internal, mpl::list< paused > >  
     1642{ 
     1643        typedef sc::state<in_the_session, torrent_internal, mpl::list< paused > > base_type; 
     1644 
    16121645        typedef mpl::list< 
    1613                 sc::transition< ev_add_to_session, in_the_session >, 
    1614                 sc::transition< ev_remove_from_session, out_of_session > 
     1646                sc::custom_reaction< ev_remove_from_session > 
    16151647        > reactions; 
    16161648 
    1617         in_the_session(); 
     1649        in_the_session(base_type::my_context ctx); 
    16181650        ~in_the_session(); 
     1651 
     1652        sc::result react(const ev_remove_from_session& evt); 
    16191653}; 
    16201654 
Note: See TracChangeset for help on using the changeset viewer.