Changeset 365


Ignore:
Timestamp:
12/27/07 17:01:16 (12 years ago)
Author:
Eoin
Message:

Notify user of low level socket error such as from firewalls blocking the client.

Location:
trunk
Files:
11 edited

Legend:

Unmodified
Added
Removed
  • trunk/res/Halite.rc

    r364 r365  
    467467    IDS_SAVEPROMPT                "Select a directory to save the files to or cancel to not download torrent at all." 
    468468    IDS_NA                        "N/A" 
     469    HAL_HALITE                    "Halite" 
    469470    HAL_INF                       "∞" 
    470471    HAL_COMPLETED_SUMMARY         "%1$.2fMB of %2$.2fMB" 
     
    496497        HAL_TORRENT_ROOT                          "Torrent Root" 
    497498        HAL_WINDOW_CLOSECONFRIM           "Are you sure you wish to close Halite? Doing so will stop any active torrents" 
     499        HAL_WINDOW_SOCKETS_FAILED     "The socket infrastructure failed to start so Halite is forced to close. Please ensure no program is blocking Halites network access." 
    498500END 
    499501 
  • trunk/res/resource.h

    r348 r365  
    269269#define IDC_CHECK_PAUSED                                40202 
    270270#define HAL_INF                                                 40203 
     271#define HAL_HALITE                                              40204 
    271272 
    272273#ifndef HAL_NA 
    273274#define HAL_NA IDS_NA 
    274 #endif                                           
    275  
     275#endif 
     276 
  • trunk/src/AdvHaliteDialog.cpp

    r335 r365  
    2525         
    2626        m_tabCtrl.AddPage(*mp_dlg, L"Test1"); 
    27 */               
     27*/       
     28 
     29        hal::event().post(shared_ptr<hal::EventDetail>( 
     30                new hal::EventMsg(L"Creating torrent tab...")));         
    2831        m_torrent.Create(m_tabCtrl); 
    2932        m_tabCtrl.AddPage(m_torrent, hal::app().res_wstr(HAL_TORRENT_TAB).c_str()); 
    3033         
     34        hal::event().post(shared_ptr<hal::EventDetail>( 
     35                new hal::EventMsg(L"Creating peers tab...")));   
    3136        m_peers.Create(m_tabCtrl); 
    3237        m_tabCtrl.AddPage(m_peers, hal::app().res_wstr(HAL_PEERS_TAB).c_str()); 
    3338         
     39        hal::event().post(shared_ptr<hal::EventDetail>( 
     40                new hal::EventMsg(L"Creating files tab...")));   
    3441        m_files.Create(m_tabCtrl); 
    3542        m_tabCtrl.AddPage(m_files, hal::app().res_wstr(HAL_FILES_TAB).c_str()); 
    3643         
     44        hal::event().post(shared_ptr<hal::EventDetail>( 
     45                new hal::EventMsg(L"Creating tracker tab...")));         
    3746        m_tracker.Create(m_tabCtrl); 
    3847        m_tabCtrl.AddPage(m_tracker, hal::app().res_wstr(HAL_TRACKER_TAB).c_str()); 
    3948         
     49        hal::event().post(shared_ptr<hal::EventDetail>( 
     50                new hal::EventMsg(L"Creating log tab...")));     
    4051        m_debug.Create(m_tabCtrl); 
    4152        m_tabCtrl.AddPage(m_debug, hal::app().res_wstr(HAL_DEBUG_TAB).c_str()); 
    4253         
    4354        m_tabCtrl.SetCurrentPage(0); 
     55        hal::event().post(shared_ptr<hal::EventDetail>( 
     56                new hal::EventMsg(L"All tabs complete!")));      
    4457         
    4558        return 0; 
  • trunk/src/AdvHaliteDialog.hpp

    r324 r365  
    11 
    2 //         Copyright E O'Callaghan 2006 - 2007. 
     2//         Copyright Eoin O'Callaghan 2006 - 2007. 
    33// Distributed under the Boost Software License, Version 1.0. 
    44//    (See accompanying file LICENSE_1_0.txt or copy at 
     
    1919 
    2020#include "HaliteListManager.hpp" 
    21  
    22 //class HaliteListViewCtrl; 
    23 //template <class TBase> 
    24 //class CHaliteListViewCtrl; 
    25  
    26 //typedef CHaliteListViewCtrl<HaliteListViewCtrl>::selection_manage_class ListViewManager; 
    2721 
    2822class HaliteWindow; 
  • trunk/src/Halite.hpp

    r348 r365  
    2525                hal::IniBase<Halite>("globals/halite", "Halite"), 
    2626                oneInst(false), 
     27#ifdef _DEBUG 
     28                logDebug_(true), 
     29#else 
    2730                logDebug_(false), 
     31#endif 
    2832                showMessage(true), 
    2933                logToFile_(true), 
  • trunk/src/HaliteWindow.cpp

    r356 r365  
    2828        use_tray(true), 
    2929        advancedUI(false), 
     30        closeToTray(false), 
     31        confirmClose(true), 
    3032        activeTab(0) 
    3133{ 
     
    5456LRESULT HaliteWindow::OnCreate(LPCREATESTRUCT lpcs) 
    5557{ 
     58        try 
     59        { 
     60         
    5661        SetWindowText(L"Halite"); 
    5762        MoveWindow(rect.left, rect.top, rect.right-rect.left, rect.bottom-rect.top, false);      
    58          
     63 
     64 
     65        hal::event().post(shared_ptr<hal::EventDetail>( 
     66                new hal::EventMsg(L"Loading Halite config..."))); 
    5967        hal::config().load(); 
    60         hal::config().settingsChanged(); 
     68         
     69        hal::event().post(shared_ptr<hal::EventDetail>( 
     70                new hal::EventMsg(L"Applying setting..."))); 
     71        if (!hal::config().settingsChanged()) 
     72        { 
     73                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     74                        new hal::EventDebug(hal::Event::critical, hal::app().res_wstr(HAL_WINDOW_SOCKETS_FAILED)))); 
     75                         
     76                MessageBox(hal::app().res_wstr(HAL_WINDOW_SOCKETS_FAILED).c_str(), 0, 0); 
     77                 
     78                DestroyWindow(); 
     79                return 0; 
     80        } 
     81         
     82        hal::event().post(shared_ptr<hal::EventDetail>( 
     83                new hal::EventMsg(L"Starting GUI..."))); 
    6184         
    6285        RECT rc; GetClientRect(&rc); 
     
    83106         
    84107        m_hWndClient = m_Split.m_hWnd; 
    85          
     108 
     109        hal::event().post(shared_ptr<hal::EventDetail>( 
     110                new hal::EventMsg(L"Creating main listview...")));       
    86111        // Create ListView and Dialog 
    87112        haliteList.Create(m_Split.m_hWnd, rc, NULL,  
    88113                LVS_REPORT|WS_CHILD|WS_VISIBLE|WS_CLIPSIBLINGS|WS_CLIPCHILDREN|LVS_SHOWSELALWAYS); 
    89114        haliteList.manager().attach(bind(&HaliteWindow::issueUiUpdate, this)); 
    90          
     115 
     116 
     117        hal::event().post(shared_ptr<hal::EventDetail>( 
     118                new hal::EventMsg(L"Creating classic dialog...")));              
    91119        mp_dlg.reset(new HaliteDialog(*this)), 
    92120        mp_dlg->Create(m_Split.m_hWnd); 
    93121//      mp_dlg->ShowWindow(true); 
    94122         
     123 
     124        hal::event().post(shared_ptr<hal::EventDetail>( 
     125                new hal::EventMsg(L"Creating advanced dialog...")));     
    95126        mp_advDlg.reset(new AdvHaliteDialog(*this)); 
    96127        mp_advDlg->Create(m_Split.m_hWnd); 
     
    99130//      m_Split.SetSplitterPanes(*mp_list, *mp_dlg); 
    100131         
     132        hal::event().post(shared_ptr<hal::EventDetail>( 
     133                new hal::EventMsg(L"Creating tray icon...")));   
    101134        // Create the tray icon. 
    102         m_trayIcon.Create(this, IDR_TRAY_MENU, L"Halite",  
     135        trayIcon_.Create(this, IDR_TRAY_MENU, L"Halite",  
    103136                CTrayNotifyIcon::LoadIconResource(IDR_APP_ICON), WM_TRAYNOTIFY, IDR_TRAY_MENU); 
    104         m_trayIcon.Hide(); 
     137        trayIcon_.Hide(); 
    105138         
    106139        // Add ToolBar and register it along with StatusBar for UIUpdates 
     
    115148        connectUiUpdate(bind(&HaliteWindow::updateWindow, this)); 
    116149         
     150        hal::event().post(shared_ptr<hal::EventDetail>( 
     151                new hal::EventMsg(L"Registering drop target...")));      
    117152        RegisterDropTarget(); 
    118153         
     
    126161        setCorrectDialog(); 
    127162         
     163        hal::event().post(shared_ptr<hal::EventDetail>( 
     164                new hal::EventMsg(L"Starting event reciever..."))); 
    128165        hal::bittorrent().startEventReceiver(); 
     166        hal::event().post(shared_ptr<hal::EventDetail>( 
     167                new hal::EventMsg(L"Initial setup complete!"))); 
    129168        issueUiUpdate(); 
     169         
     170        } 
     171        catch(const std::exception& e) 
     172        { 
     173                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     174                        new hal::EventStdException(hal::Event::critical, e, L"HaliteWindow::OnCreate")));  
     175 
     176                DestroyWindow(); 
     177        } 
    130178         
    131179        return 0; 
     
    142190LRESULT HaliteWindow::OnTrayNotification(UINT /*uMsg*/, WPARAM wParam, LPARAM lParam) 
    143191{ 
    144     m_trayIcon.OnTrayNotification(wParam, lParam); 
     192    trayIcon_.OnTrayNotification(wParam, lParam); 
    145193     
    146194    return 0; 
     
    182230         
    183231        UISetText(3, downloadRates.c_str());     
    184         m_trayIcon.SetTooltipText(downloadRates.c_str()); 
     232        trayIcon_.SetTooltipText(downloadRates.c_str()); 
    185233         
    186234        if (details.dht_on) 
     
    264312{ 
    265313        hal::event().post(shared_ptr<hal::EventDetail>( 
    266                 new hal::EventMsg(L"I recieved data.", hal::Event::info))); 
     314                new hal::EventMsg(L"I recieved data."))); 
    267315                 
    268316        switch (pCSD->dwData) 
     
    308356 
    309357        ui().update(); 
    310          
    311 /*      int itemPos = haliteList.GetSelectionMark(); 
    312         if (itemPos == -1) 
    313         { 
    314                 LV_FINDINFO findInfo = { sizeof(LV_FINDINFO) };  
    315                 findInfo.flags = LVFI_STRING; 
    316                  
    317                 wstring filename = file.leaf();          
    318                 findInfo.psz = filename.c_str(); 
    319                  
    320                 int itemPos = haliteList.FindItem(&findInfo, -1);        
    321                 haliteList.manager().setSelected(itemPos); 
    322         }        
    323 */       
     358 
    324359        } 
    325360        catch(const boost::filesystem::filesystem_error&) 
     
    332367void HaliteWindow::OnClose() 
    333368{ 
     369        if (closeToTray && trayIcon_.IsHidden()) 
     370        {                
     371                ShowWindow(SW_HIDE); 
     372                trayIcon_.Show(); 
     373        } 
     374        else 
     375        { 
     376                if (!confirmClose || (confirmClose &&  
     377                        MessageBox(hal::app().res_wstr(HAL_WINDOW_CLOSECONFRIM).c_str(),  
     378                                hal::app().res_wstr(HAL_HALITE).c_str(), MB_YESNO) == IDYES)) 
     379                { 
     380                        DestroyWindow(); 
     381                } 
     382        } 
     383} 
     384  
     385void HaliteWindow::OnDestroy() 
     386{ 
    334387        splitterPos = m_Split.GetSplitterPos(); 
    335388 
    336389        hal::config().save(); 
    337390        save(); 
    338          
    339         DestroyWindow(); 
    340 } 
    341   
    342 void HaliteWindow::OnDestroy() 
    343 { 
    344391        PostQuitMessage(0); 
    345392} 
     
    352399                { 
    353400                        ShowWindow(SW_HIDE); 
    354                         m_trayIcon.Show(); 
     401                        trayIcon_.Show(); 
    355402                } 
    356403        } 
     
    374421LRESULT HaliteWindow::OnTrayOpenHalite(WORD wNotifyCode, WORD wID, HWND hWndCtl, BOOL& bHandled) 
    375422{ 
     423        trayIcon_.Hide(); 
    376424        ShowWindow(SW_RESTORE); 
    377         m_trayIcon.Hide(); 
    378425         
    379426        return 0; 
     
    487534{ 
    488535        hal::event().post(shared_ptr<hal::EventDetail>( 
    489                 new hal::EventMsg(L"I tried to contact me.", hal::Event::info)));                
     536                new hal::EventMsg(L"I tried to contact me.")));          
    490537 
    491538        return WM_AreYouMe_;  
  • trunk/src/HaliteWindow.hpp

    r364 r365  
    99#define ID_WINDOW_BEGIN                         13000 
    1010#define HAL_WINDOW_CLOSECONFRIM         ID_WINDOW_BEGIN + 1 
     11#define HAL_WINDOW_SOCKETS_FAILED       ID_WINDOW_BEGIN + 2 
    1112 
    1213#ifndef RC_INVOKED 
  • trunk/src/advtabs/Tracker.cpp

    r345 r365  
    1919        m_list.attachEditedConnection(bind(&AdvTrackerDialog::trackerListEdited, this)); 
    2020 
    21         string torrent_name;     
    22          
    23         if (hal::bittorrent().torrentDetails().focusedTorrent()) 
    24                 torrent_name = hal::to_utf8(hal::bittorrent().torrentDetails().focusedTorrent()->name()); 
    25          
    26         if (hal::bittorrent().isTorrent(torrent_name)) 
    27         {                
    28                 ::EnableWindow(GetDlgItem(IDC_TRACKER_LOGINCHECK), true); 
    29                 ::EnableWindow(GetDlgItem(IDC_TRACKERLIST), true); 
    30                  
    31                 std::pair<std::wstring, std::wstring> details =  
    32                         hal::bittorrent().getTorrentLogin(torrent_name); 
    33                  
    34                 username_ = details.first; 
    35                 password_ = details.second; 
    36         } 
    37         else 
    38         {                
    39                 ::EnableWindow(GetDlgItem(IDC_TRACKER_LOGINCHECK), false); 
    40                 ::EnableWindow(GetDlgItem(IDC_TRACKERLIST), false); 
    41                  
    42                 username_ = L""; 
    43                 password_ = L""; 
    44         } 
    45                  
    46         setLoginUiState(torrent_name); 
     21        ::EnableWindow(GetDlgItem(IDC_TRACKER_LOGINCHECK), false); 
     22        ::EnableWindow(GetDlgItem(IDC_TRACKERLIST), false); 
     23         
     24        username_ = L""; 
     25        password_ = L""; 
     26                 
    4727        DoDataExchange(false);   
    4828        return 0; 
  • trunk/src/halConfig.cpp

    r357 r365  
    1616{ 
    1717 
    18 void Config::settingsChanged() 
     18bool Config::settingsChanged() 
    1919{ 
    2020//      thread settings(bind(&BitTConfig::settingsThread, this)); 
    21         settingsThread(); 
     21        return settingsThread(); 
    2222} 
    2323 
    24 void Config::settingsThread() 
     24bool Config::settingsThread() 
    2525{ 
     26        try 
     27        { 
     28        bool success = bittorrent().listenOn( 
     29                std::make_pair(portFrom, portTo)); 
     30        if (!success) 
     31        { 
     32                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     33                        new hal::EventDebug(Event::critical, L"settingsThread, Init"))); 
     34                 
     35                return false; 
     36        } 
     37        } 
     38        catch(const std::exception& e) 
     39        { 
     40                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     41                        new hal::EventStdException(Event::critical, e, L"settingsThread, Init")));  
     42                 
     43                return false; 
     44        } 
     45         
    2646        try 
    2747        { 
     
    5676        } 
    5777         
    58         try 
    59         { 
    60         bool success = bittorrent().listenOn( 
    61                 std::make_pair(portFrom, portTo)); 
    62         if (!success) 
    63         { 
    64                 hal::event().post(boost::shared_ptr<hal::EventDetail>( 
    65                         new hal::EventDebug(Event::critical, L"settingsThread, Init")));  
    66  
    67 //              MessageBox(0, app().res_wstr(IDS_TRYANOTHERPORT).c_str(), L"Init Exception", MB_ICONERROR|MB_OK); 
    68         } 
    69         } 
    70         catch(const std::exception& e) 
    71         { 
    72                 hal::event().post(boost::shared_ptr<hal::EventDetail>( 
    73                         new hal::EventStdException(Event::critical, e, L"settingsThread, Init")));  
    74 //              ::MessageBoxA(0, e.what(), "Init Exception", MB_ICONERROR|MB_OK); 
    75         } 
    76          
    7778        bittorrent().setSessionHalfOpenLimit(halfConnLimit); 
    7879         
     
    104105        else 
    105106                bittorrent().ensureDhtOff(); 
     107                 
     108        return true; 
    106109} 
    107110 
  • trunk/src/halConfig.hpp

    r352 r365  
    109109        } 
    110110         
    111         void settingsChanged(); 
     111        bool settingsChanged(); 
    112112         
    113113        friend class HaliteWindow; 
     
    118118 
    119119private: 
    120         void settingsThread(); 
     120        bool settingsThread(); 
    121121         
    122122        int maxConnections; 
  • trunk/src/halTorrent.cpp

    r358 r365  
    768768bool BitTorrent::listenOn(std::pair<int, int> const& range) 
    769769{ 
     770        try 
     771        { 
     772         
    770773        if (!pimpl->theSession.is_listening()) 
    771774        { 
     
    780783                else 
    781784                        return true; 
     785        } 
     786         
     787        } 
     788        catch(...) 
     789        { 
     790                return false; 
    782791        } 
    783792} 
     
    905914void BitTorrent::ensureIpFilterOn(progressCallback fn) 
    906915{ 
     916        try 
     917        { 
     918         
    907919        if (!pimpl->ip_filter_loaded_) 
    908920        { 
     
    916928                pimpl->ip_filter_on_ = true; 
    917929                pimpl->ip_filter_count(); 
     930        } 
     931         
     932        } 
     933        catch(const std::exception& e) 
     934        {                
     935                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     936                        new hal::EventStdException(Event::critical, e, L"ensureIpFilterOn")));  
     937 
     938                ensureIpFilterOff(); 
    918939        } 
    919940} 
     
    9891010        pe.prefer_rc4 = prefer_rc4; 
    9901011         
     1012        try 
     1013        { 
     1014         
    9911015        pimpl->theSession.set_pe_settings(pe); 
     1016         
     1017        } 
     1018        catch(const std::exception& e) 
     1019        { 
     1020                hal::event().post(boost::shared_ptr<hal::EventDetail>( 
     1021                                new hal::EventStdException(Event::critical, e, L"ensurePeOn")));  
     1022                                 
     1023                ensurePeOff();           
     1024        } 
    9921025} 
    9931026 
Note: See TracChangeset for help on using the changeset viewer.