Changeset 114


Ignore:
Timestamp:
12/28/06 19:55:10 (13 years ago)
Author:
Eoin
Message:

DHT enabled.

Files:
1 added
6 edited

Legend:

Unmodified
Added
Removed
  • res/Halite.rc

    r109 r114  
    414414    IDPANE_STATUS           "(D-U) 000.00kb/s - 000.00kb/s" 
    415415    IDPANE_CAPS_INDICATOR   "CAPS" 
     416    IDPANE_DHT              "DHT disabled, 100 nodes tracking 100 torrents." 
    416417END 
    417418 
  • res/resource.h

    r109 r114  
    1212#define IDPANE_CAPS_INDICATOR           110 
    1313#define IDD_NEWTORRENT                  111 
     14#define IDPANE_DHT                      111 
    1415#define IDD_CONFIGGENERAL               112 
    1516#define IDD_ADVHALITEDLG                114 
     
    7273#define IDC_RADIO1                      1046 
    7374#define IDC_BC_DHT                      1048 
    74 #define IDC_BC_DHT2                     1049 
    7575#define IDC_BC_FILTERCHECK              1049 
    7676#define IDC_BC_FILTERSTATIC             1050 
  • src/HaliteWindow.cpp

    r113 r114  
    5252        UIAddStatusBar(m_hWndStatusBar); 
    5353         
    54         int panes[] = {ID_DEFAULT_PANE, IDPANE_STATUS, IDPANE_CAPS_INDICATOR}; 
     54        int panes[] = {ID_DEFAULT_PANE, IDPANE_DHT, IDPANE_STATUS}; 
    5555        m_StatusBar.SetPanes(panes, 3, false); 
    5656         
     
    6868        mp_dlg.reset(new HaliteDialog(ui(), mp_list->manager())), 
    6969        mp_dlg->Create(m_Split.m_hWnd); 
    70 //      mp_dlg->ShowWindow(true); 
     70        mp_dlg->ShowWindow(true); 
    7171         
    7272        mp_advDlg.reset(new AdvHaliteDialog(this)); 
    7373        mp_advDlg->Create(m_Split.m_hWnd); 
    74         mp_advDlg->ShowWindow(true); 
    75          
    76         m_Split.SetSplitterPanes(*mp_list, *mp_advDlg); 
     74//      mp_advDlg->ShowWindow(true); 
     75         
     76        m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
    7777         
    7878        // Create the tray icon. 
     
    115115void HaliteWindow::updateWindow() 
    116116{ 
     117        halite::SessionDetail details = halite::bittorrent().getSessionDetails(); 
     118         
    117119        int port = halite::bittorrent().isListeningOn(); 
    118120        if (port > -1) 
     
    129131                        % (speed.second/1024)).str(); 
    130132         
    131         UISetText(1, downloadRates.c_str());     
     133        UISetText(2, downloadRates.c_str());     
    132134        m_trayIcon.SetTooltipText(downloadRates.c_str()); 
     135         
     136        if (details.dht_on) 
     137        { 
     138                wstring dht = (wformat(L"DHT enabled, %1% nodes tracking %2% torrents") 
     139                        % details.dht_nodes % details.dht_torrents).str(); 
     140                         
     141                UISetText(1, dht.c_str()); 
     142        } 
     143        else 
     144        { 
     145                UISetText(1, L"DHT disabled"); 
     146        } 
    133147} 
    134148 
  • src/halTorrent.cpp

    r113 r114  
    252252} 
    253253 
     254bool operator!=(const lbt::dht_settings& lhs, const lbt::dht_settings& rhs) 
     255{ 
     256        return lhs.max_peers_reply != rhs.max_peers_reply || 
     257                   lhs.search_branching != rhs.search_branching || 
     258                   lhs.service_port != rhs.service_port || 
     259           lhs.max_fail_count != rhs.max_fail_count; 
     260} 
     261 
    254262class BitTorrent_impl 
    255263{ 
     
    276284        BitTorrent_impl() : 
    277285                theSession(lbt::fingerprint("HL", 0, 2, 0, 8)), 
    278                 workingDirectory(globalModule().exePath().branch_path()) 
     286                workingDirectory(globalModule().exePath().branch_path()), 
     287                dht_on_(false) 
    279288        { 
    280289                boost::filesystem::ifstream ifs(workingDirectory/"Torrents.xml"); 
     
    293302        TorrentMap torrents; 
    294303        const path workingDirectory; 
     304         
     305        bool dht_on_; 
     306        lbt::dht_settings dht_settings_; 
    295307}; 
    296308 
     
    348360} 
    349361 
     362void BitTorrent::ensure_dht_on() 
     363{ 
     364        if (!pimpl->dht_on_) 
     365        { 
     366                lbt::entry dht_state; 
     367                 
     368                if (exists(pimpl->workingDirectory/"dht_state.bin")) 
     369                        dht_state = haldecode(pimpl->workingDirectory/"dht_state.bin"); 
     370                 
     371                try 
     372                { 
     373                pimpl->theSession.start_dht(dht_state); 
     374                pimpl->dht_on_ = true; 
     375                } 
     376                catch(...) 
     377                {} 
     378        } 
     379} 
     380 
     381void BitTorrent::ensure_dht_off() 
     382{ 
     383        if (pimpl->dht_on_) 
     384        { 
     385                pimpl->theSession.stop_dht();            
     386                pimpl->dht_on_ = false; 
     387        } 
     388} 
     389 
    350390void BitTorrent::setSessionLimits(int maxConn, int maxUpload) 
    351391{                
     
    362402} 
    363403 
     404void BitTorrent::setDhtSettings(int max_peers_reply, int search_branching,  
     405        int service_port, int max_fail_count) 
     406{ 
     407        lbt::dht_settings settings; 
     408        settings.max_peers_reply = max_peers_reply; 
     409        settings.search_branching = search_branching; 
     410        settings.service_port = service_port; 
     411        settings.max_fail_count = max_fail_count; 
     412         
     413        if (pimpl->dht_settings_ != settings) 
     414        { 
     415                pimpl->dht_settings_ = settings; 
     416                pimpl->theSession.set_dht_settings(pimpl->dht_settings_); 
     417        } 
     418} 
     419 
    364420pair<double, double> BitTorrent::sessionSpeed()  
    365421{ 
    366422        lbt::session_status sStatus = pimpl->theSession.status();                
    367423        return pair<double, double>(sStatus.download_rate, sStatus.upload_rate); 
     424} 
     425 
     426const SessionDetail BitTorrent::getSessionDetails() 
     427{ 
     428        SessionDetail details; 
     429         
     430        lbt::session_status status = pimpl->theSession.status(); 
     431        lbt::session_settings settings = pimpl->theSession.settings(); 
     432         
     433        details.sessionSpeed = pair<double, double>(status.download_rate, status.upload_rate); 
     434         
     435        details.dht_on = pimpl->dht_on_; 
     436        details.dht_nodes = status.m_dht_nodes; 
     437        details.dht_torrents = status.m_dht_torrents; 
     438         
     439        return details; 
    368440} 
    369441 
     
    534606                        ++iter; 
    535607                        } 
     608                        catch(const lbt::duplicate_torrent&) 
     609                        { 
     610                                ++iter; // Harmless, don't worry about it. 
     611                        } 
    536612                        catch(std::exception &ex)  
    537613                        { 
  • src/halTorrent.hpp

    r113 r114  
    112112typedef std::vector<PeerDetail> PeerDetails; 
    113113 
     114struct SessionDetail 
     115{ 
     116        std::pair<double, double> sessionSpeed; 
     117         
     118        bool dht_on; 
     119        int dht_nodes; 
     120        int dht_torrents; 
     121}; 
     122 
    114123class BitTorrent_impl; 
    115124 
     
    123132        void stopListening(); 
    124133         
     134        void ensure_dht_on(); 
     135        void ensure_dht_off(); 
     136         
    125137        void setSessionLimits(int maxConn, int maxUpload); 
    126138        void setSessionSpeed(float download, float upload); 
     139        void setDhtSettings(int max_peers_reply, int search_branching,  
     140                int service_port, int max_fail_count); 
    127141        std::pair<double, double> sessionSpeed(); 
     142        const SessionDetail getSessionDetails(); 
    128143         
    129144        void newTorrent(boost::filesystem::path filename, boost::filesystem::path files); 
  • src/ini/BitTConfig.hpp

    r113 r114  
    1717                portTo(6889), 
    1818                enableDHT(false), 
     19                dhtMaxPeersReply(50), 
     20                dhtSearchBranching(5),           
     21                dhtServicePort(6881), 
     22                dhtMaxFailCount(20), 
    1923                enableIPFilter(false) 
    2024        {} 
     
    3236                if(version > 0) { 
    3337                        ar & BOOST_SERIALIZATION_NVP(enableDHT); 
     38                        ar & BOOST_SERIALIZATION_NVP(dhtMaxPeersReply); 
     39                        ar & BOOST_SERIALIZATION_NVP(dhtSearchBranching); 
     40                        ar & BOOST_SERIALIZATION_NVP(dhtServicePort); 
     41                        ar & BOOST_SERIALIZATION_NVP(dhtMaxFailCount); 
    3442                        ar & BOOST_SERIALIZATION_NVP(enableIPFilter); 
    3543                        ar & BOOST_SERIALIZATION_NVP(ipFilterFile); 
     
    5361         
    5462        bool enableDHT; 
     63        int dhtMaxPeersReply; 
     64        int dhtSearchBranching; 
     65        int dhtServicePort; 
     66        int dhtMaxFailCount; 
    5567         
    5668        bool enableIPFilter;     
Note: See TracChangeset for help on using the changeset viewer.