Ignore:
Timestamp:
07/16/08 18:55:41 (11 years ago)
Author:
Eoin
Message:

Cleaned up trunk alert handler code.

File:
1 edited

Legend:

Unmodified
Added
Removed
  • trunk/src/halSession.hpp

    r491 r503  
    4040namespace serialization { 
    4141 
    42 #define IP_SAVE  3 
    43  
    4442template<class Archive, class address_type> 
    4543void save(Archive& ar, const address_type& ip, const unsigned int version) 
    4644{        
    47 #if IP_SAVE == 1 
    48         typename address_type::bytes_type bytes = ip.to_bytes();         
    49         for (typename address_type::bytes_type::iterator i=bytes.begin(); i != bytes.end(); ++i) 
    50                 ar & BOOST_SERIALIZATION_NVP(*i); 
    51 #elif IP_SAVE == 2 
    52         string dotted = ip.to_string();  
    53         ar & BOOST_SERIALIZATION_NVP(dotted); 
    54 #elif IP_SAVE == 3 
    5545        unsigned long addr = ip.to_ulong();      
    5646        ar & BOOST_SERIALIZATION_NVP(addr); 
    57 #endif 
    5847} 
    5948 
     
    6150void load(Archive& ar, address_type& ip, const unsigned int version) 
    6251{        
    63 #if IP_SAVE == 1 
    64         typename address_type::bytes_type bytes;         
    65         for (typename address_type::bytes_type::iterator i=bytes.begin(); i != bytes.end(); ++i) 
    66                 ar & BOOST_SERIALIZATION_NVP(*i);        
    67         ip = address_type(bytes); 
    68 #elif IP_SAVE == 2       
    69         string dotted; 
    70         ar & BOOST_SERIALIZATION_NVP(dotted);    
    71         ip = address_type::from_string(dotted); 
    72 #elif IP_SAVE == 3 
    7352        unsigned long addr; 
    7453        ar & BOOST_SERIALIZATION_NVP(addr);      
    7554        ip = address_type(addr); 
    76 #endif 
    7755} 
    7856 
     
    9775        Archive & ar, 
    9876        boost::filesystem::basic_path<String, Traits>& p, 
    99         const unsigned int file_version 
    100 ){ 
     77        const unsigned int file_version) 
     78{ 
    10179        split_free(ar, p, file_version);             
    10280} 
     
    232210{ 
    233211        friend class bit; 
    234          
    235 public: 
    236          
    237         ~bit_impl() 
    238         { 
    239                 stop_alert_handler(); 
    240                  
    241                 //save_torrent_data(); 
    242                  
    243                 try 
    244                 { 
    245                  
    246                 if (ip_filter_changed_) 
    247                 {        
    248                         fs::ofstream ofs(workingDirectory/L"IPFilter.bin", std::ios::binary); 
    249 //                      boost::archive::binary_oarchive oba(ofs); 
    250                          
    251                         libt::ip_filter::filter_tuple_t vectors = ip_filter_.export_filter();    
    252                          
    253                         std::vector<libt::ip_range<asio::ip::address_v4> > v4(vectors.get<0>()); 
    254                         std::vector<libt::ip_range<asio::ip::address_v6> > v6(vectors.get<1>()); 
    255                          
    256                         v4.erase(std::remove(v4.begin(), v4.end(), 0), v4.end()); 
    257                         v6.erase(std::remove(v6.begin(), v6.end(), 0), v6.end()); 
    258  
    259                         write_vec_range(ofs, v4); 
    260 //                      write_vec_range(ofs, v6); 
    261                 }        
    262                 } 
    263                 catch(std::exception& e) 
    264                 { 
    265                         hal::event_log.post(boost::shared_ptr<hal::EventDetail>( 
    266                                 new hal::EventStdException(event_logger::critical, e, L"~BitTorrent_impl")));  
    267                 } 
    268         } 
     212 
     213private: 
     214        bit_impl();      
     215public:  
     216        ~bit_impl(); 
    269217 
    270218        bool listen_on(std::pair<int, int> const& range) 
     
    594542        signals; 
    595543 
     544        void start_alert_handler(); 
    596545        void stop_alert_handler(); 
    597546        void alert_handler(); 
     
    913862 
    914863private: 
    915         bit_impl() : 
    916                 session_(libt::fingerprint(HALITE_FINGERPRINT)), 
    917                 timer_(io_), 
    918                 keepChecking_(false), 
    919                 bittorrentIni(L"BitTorrent.xml"), 
    920                 the_torrents_(bittorrentIni), 
    921                 defTorrentMaxConn_(-1), 
    922                 defTorrentMaxUpload_(-1), 
    923                 defTorrentDownload_(-1), 
    924                 defTorrentUpload_(-1), 
    925                 ip_filter_on_(false), 
    926                 ip_filter_loaded_(false), 
    927                 ip_filter_changed_(false), 
    928                 ip_filter_count_(0), 
    929                 dht_on_(false) 
    930         { 
    931                 torrent_internal::the_session_ = &session_; 
    932                 torrent_internal::workingDir_ = workingDir(); 
    933                  
    934                 session_.set_severity_level(libt::alert::debug);                 
    935                 session_.add_extension(&libt::create_metadata_plugin); 
    936                 session_.add_extension(&libt::create_ut_pex_plugin); 
    937                 session_.set_max_half_open_connections(10); 
    938                  
    939                 hal::event_log.post(shared_ptr<hal::EventDetail>( 
    940                         new hal::EventMsg(L"Loading BitTorrent.xml.", hal::event_logger::info)));                
    941                 bittorrentIni.load_data(); 
    942                 hal::event_log.post(shared_ptr<hal::EventDetail>( 
    943                         new hal::EventMsg(L"Loading torrent parameters.", hal::event_logger::info)));    
    944                 the_torrents_.load_from_ini(); 
    945                 hal::event_log.post(shared_ptr<hal::EventDetail>( 
    946                         new hal::EventMsg(L"Loading done!", hal::event_logger::info))); 
    947                  
    948                 try 
    949                 {                                                
    950                 if (fs::exists(workingDirectory/L"Torrents.xml")) 
    951                 { 
    952                         { 
    953                         fs::wifstream ifs(workingDirectory/L"Torrents.xml"); 
    954                  
    955                         event_log.post(shared_ptr<EventDetail>(new EventMsg(L"Loading old Torrents.xml"))); 
    956                  
    957                         TorrentMap torrents; 
    958                         boost::archive::xml_wiarchive ia(ifs);   
    959                         ia >> boost::serialization::make_nvp("torrents", torrents); 
    960                          
    961                         the_torrents_ = torrents; 
    962                         } 
    963                          
    964                         event_log.post(shared_ptr<EventDetail>(new EventMsg( 
    965                                 wformat(L"Total %1%.") % the_torrents_.size())));                                
    966                          
    967                         fs::rename(workingDirectory/L"Torrents.xml", workingDirectory/L"Torrents.xml.safe.to.delete"); 
    968                 }                        
    969                 } 
    970                 catch(const std::exception& e) 
    971                 { 
    972                         event_log.post(shared_ptr<EventDetail>( 
    973                                 new EventStdException(event_logger::fatal, e, L"Loading Old Torrents.xml"))); 
    974                 }                
    975                                  
    976                 if (exists(workingDirectory/L"DHTState.bin")) 
    977                 { 
    978                         try 
    979                         { 
    980                                 dht_state_ = haldecode(workingDirectory/L"DHTState.bin"); 
    981                         }                
    982                         catch(const std::exception& e) 
    983                         { 
    984                                 event_log.post(shared_ptr<EventDetail>( 
    985                                         new EventStdException(event_logger::critical, e, L"Loading DHTState.bin"))); 
    986                         } 
    987                 } 
    988                  
    989                 {       libt::session_settings settings = session_.settings(); 
    990                         settings.user_agent = string("Halite ") + HALITE_VERSION_STRING; 
    991                         session_.set_settings(settings); 
    992                 } 
    993                  
    994                 timer_.expires_from_now(boost::posix_time::seconds(5)); 
    995                 timer_.async_wait(bind(&bit_impl::alert_handler, this)); 
    996         } 
    997864 
    998865        bool create_torrent(const create_torrent_params& params, fs::wpath out_file, progress_callback fn) 
     
    1089956        mutable mutex_t mutex_; 
    1090957 
    1091         asio::io_service io_; 
    1092         asio::deadline_timer timer_; 
     958        boost::optional<thread_t> alert_checker_; 
    1093959        bool keepChecking_; 
    1094960         
Note: See TracChangeset for help on using the changeset viewer.