Changeset 293


Ignore:
Timestamp:
09/15/07 20:32:50 (13 years ago)
Author:
Eoin
Message:

Torrent Finish and numerous small improvements.

Files:
7 edited

Legend:

Unmodified
Added
Removed
  • res/Halite.rc

    r292 r293  
    526526STRINGTABLE  
    527527BEGIN 
    528         HAL_LISTVIEW_COLUMNS              "Name;Status;Progress;Download;Upload;Peers;Seeds;ETA;Copies;Tracker;Reannounce;Ratio;Total;Completed;Remaining;Downloaded;Uploaded;Active;Seeding;Start Time" 
     528        HAL_LISTVIEW_COLUMNS              "Name;Status;Progress;Download;Upload;Peers;Seeds;ETA;Copies;Tracker;Reannounce;Ratio;Total;Completed;Remaining;Downloaded;Uploaded;Active;Seeding;Start Time;Finish Time" 
    529529        HAL_DEBUG_LISTVIEW_COLUMNS        "Time;Message;Severity" 
    530530        HAL_TRACKER_LISTVIEW_COLUMNS  "Tracker;Tier" 
     
    594594        HAL_TRACKER_ALERT                         "Alert %2%, Status code: %4%, Times %3%. (%1%)" 
    595595        HAL_TRACKER_REPLY_ALERT           "%2%. %3% Peers. (%1%)" 
     596        HAL_FAST_RESUME_ALERT                   "Fast rusume failed: %2%. (%1%)" 
     597        HAL_PIECE_FINISHED_ALERT                "Piece %2% finished. (%1%)" 
     598        HAL_BLOCK_FINISHED_ALERT                "Block %2% of piece %3% finished. (%1%)" 
     599        HAL_BLOCK_DOWNLOADING_ALERT             "Block %2% of piece %3% downloading. (%1%)" 
    596600         
    597601    HAL_EVENT_XMLEXP              "Xml Exception (%1%) with %2%." 
  • src/HaliteListView.cpp

    r292 r293  
    1919        wstring column_names = hal::app().res_wstr(LISTVIEW_ID_COLUMNNAMES); 
    2020         
    21         // "Name;Status;Progress;Download;Upload;Peers;Seeds;ETA;Copies;Tracker;Reannounce;Ratio;Total;Completed;Remaining;Downloaded;Uploaded;Active;Seeding;Start Time" 
     21        // "Name;Status;Progress;Download;Upload;Peers;Seeds;ETA;Copies;Tracker;Reannounce;Ratio;Total;Completed;Remaining;Downloaded;Uploaded;Active;Seeding;Start Time;Finish Time" 
    2222        boost::split(names, column_names, boost::is_any_of(L";")); 
    2323         
    24         array<int, 20> widths = {100,110,60,60,60,42,45,61,45,45,45,45,45,45,45,45,45,45,45,45}; 
    25         array<int, 20> order = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19}; 
    26         array<bool, 20> visible = {true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true}; 
     24        array<int, 21> widths = {100,110,60,60,60,42,45,61,45,45,45,45,45,45,45,45,45,45,45,45,45}; 
     25        array<int, 21> order = {0,1,2,3,4,5,6,7,8,9,10,11,12,13,14,15,16,17,18,19,20}; 
     26        array<bool, 21> visible = {true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true,true}; 
    2727         
    2828        SetDefaults(names, widths, order, visible); 
     
    5757        SetColumnSortType(18, LVCOLSORT_CUSTOM, new ColumnAdapters::SeedingTime()); 
    5858        SetColumnSortType(19, LVCOLSORT_CUSTOM, new ColumnAdapters::StartTime()); 
     59        SetColumnSortType(20, LVCOLSORT_CUSTOM, new ColumnAdapters::FinishTime()); 
    5960} 
    6061 
  • src/HaliteListView.hpp

    r291 r293  
    274274                        else 
    275275                        { 
    276                                 return L"∞";             
     276                                return hal::app().res_wstr(IDS_NA);              
     277                        } 
     278                }                
     279        }; 
     280         
     281        struct FinishTime : public ColAdapter_t 
     282        { 
     283                virtual bool less(tD& l, tD& r) { return l->finishTime() < r->finishTime(); }            
     284                virtual std::wstring print(tD& t)  
     285                {  
     286                        if (!t->finishTime().is_special()) 
     287                        { 
     288                                return hal::from_utf8( 
     289                                        boost::posix_time::to_simple_string(t->finishTime())); 
     290                        } 
     291                        else 
     292                        { 
     293                                return hal::app().res_wstr(IDS_NA);              
    277294                        } 
    278295                }                
     
    320337    void serialize(Archive& ar, const unsigned int version) 
    321338    { 
    322                 if (version > 1) 
     339                if (version > 2) 
    323340                        ar & boost::serialization::make_nvp("listview", boost::serialization::base_object<listClass>(*this)); 
    324341    } 
     
    330347        void OnDetach(); 
    331348         
    332         enum { NumberOfColumns_s = 19 }; 
     349        enum { NumberOfColumns_s = 21 }; 
    333350         
    334351        HaliteWindow& halWindow_; 
    335352}; 
    336353 
    337 BOOST_CLASS_VERSION(HaliteListViewCtrl, 2) 
     354BOOST_CLASS_VERSION(HaliteListViewCtrl, 3) 
    338355typedef HaliteListViewCtrl::SelectionManager ListViewManager; 
  • src/HaliteWindow.cpp

    r291 r293  
    244244void HaliteWindow::issueUiUpdate() 
    245245{        
    246 //      hal::event().post(shared_ptr<hal::EventDetail>( 
    247 //              new hal::EventDebug(hal::Event::info, (wformat(L"issueUiUpdate")).str().c_str()))); 
    248  
    249246        try 
    250247        { 
    251248         
    252 /*      std::set<string> allSelected; 
    253  
    254         std::transform(haliteList.manager().allSelected().begin(),  
    255                                    haliteList.manager().allSelected().end(),  
    256                                    std::inserter(allSelected, allSelected.end()),  
    257                                    &hal::to_utf8);       
    258 */ 
    259249        const hal::TorrentDetails& torrents = hal::bittorrent().updateTorrentDetails( 
    260250                haliteList.manager().selected(), haliteList.manager().allSelected()); 
     
    307297         
    308298        wpath file(lpszPath, boost::filesystem::native);         
    309         hal::bittorrent().addTorrent(file, wpath(saveDirectory)); 
     299        hal::bittorrent().addTorrent(file, wpath(saveDirectory), startPaused, compactStorage); 
    310300 
    311301        ui().update(); 
  • src/halTorrent.cpp

    r292 r293  
    1818#define HAL_TRACKER_REPLY_ALERT                                         80008 
    1919#define LBT_EVENT_TORRENT_PAUSED                                        80009 
     20#define HAL_FAST_RESUME_ALERT                                           80010 
     21#define HAL_PIECE_FINISHED_ALERT                                        80011 
     22#define HAL_BLOCK_FINISHED_ALERT                                        80012 
     23#define HAL_BLOCK_DOWNLOADING_ALERT                                     80013 
    2024 
    2125#ifndef RC_INVOKED 
     
    334338                                        wformat(hal::app().res_wstr(LBT_EVENT_TORRENT_FINISHED))  
    335339                                                % get(a.handle).name()) 
    336                         )       );                       
     340                        )       ); 
     341                         
     342                        get(a.handle).finished();        
    337343                } 
    338344                 
     
    343349                                        wformat(hal::app().res_wstr(LBT_EVENT_TORRENT_PAUSED))  
    344350                                                % get(a.handle).name()) 
    345                         )       );       
     351                        )       ); 
    346352 
    347353                        get(a.handle).completedPause(); 
     
    363369                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    364370                                        wformat(hal::app().res_wstr(HAL_PEER_BAN_ALERT)) 
    365                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     371                                                % get(a.handle).name() 
    366372                                                % hal::from_utf8_safe(a.ip.address().to_string())) 
    367373                        )       );                               
     
    373379                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    374380                                        wformat(hal::app().res_wstr(HAL_HASH_FAIL_ALERT)) 
    375                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     381                                                % get(a.handle).name() 
    376382                                                % a.piece_index) 
    377383                        )       );                               
     
    383389                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    384390                                        wformat(hal::app().res_wstr(HAL_URL_SEED_ALERT)) 
    385                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     391                                                % get(a.handle).name() 
    386392                                                % hal::from_utf8_safe(a.url) 
    387393                                                % hal::from_utf8_safe(a.msg())) 
     
    394400                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    395401                                        wformat(hal::app().res_wstr(HAL_TRACKER_WARNING_ALERT)) 
    396                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     402                                                % get(a.handle).name() 
    397403                                                % hal::from_utf8_safe(a.msg())) 
    398404                        )       );                               
     
    404410                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    405411                                        wformat(hal::app().res_wstr(HAL_TRACKER_ANNOUNCE_ALERT)) 
    406                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name())) 
     412                                                % get(a.handle).name()) 
    407413                        )       );                               
    408414                } 
     
    413419                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    414420                                        wformat(hal::app().res_wstr(HAL_TRACKER_ALERT)) 
    415                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     421                                                % get(a.handle).name() 
    416422                                                % hal::from_utf8_safe(a.msg()) 
    417423                                                % a.times_in_row 
     
    425431                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
    426432                                        wformat(hal::app().res_wstr(HAL_TRACKER_REPLY_ALERT)) 
    427                                                 % hal::from_utf8_safe(a.handle.get_torrent_info().name()) 
     433                                                % get(a.handle).name() 
    428434                                                % hal::from_utf8_safe(a.msg()) 
    429435                                                % a.num_peers) 
     436                        )       );                               
     437                } 
     438                 
     439                void operator()(lbt::fastresume_rejected_alert const& a) const 
     440                { 
     441                        event().post(shared_ptr<EventDetail>( 
     442                                new EventGeneral(lbtAlertToHalEvent(a.severity()), a.timestamp(), 
     443                                        wformat(hal::app().res_wstr(HAL_FAST_RESUME_ALERT)) 
     444                                                % get(a.handle).name() 
     445                                                % hal::from_utf8_safe(a.msg())) 
     446                        )       );                               
     447                } 
     448                 
     449                void operator()(lbt::piece_finished_alert const& a) const 
     450                { 
     451                        event().post(shared_ptr<EventDetail>( 
     452                                new EventGeneral(Event::debug, a.timestamp(), 
     453                                        wformat(hal::app().res_wstr(HAL_PIECE_FINISHED_ALERT)) 
     454                                                % get(a.handle).name() 
     455                                                % a.piece_index) 
     456                        )       );                               
     457                } 
     458                 
     459                void operator()(lbt::block_finished_alert const& a) const 
     460                { 
     461                        event().post(shared_ptr<EventDetail>( 
     462                                new EventGeneral(Event::debug, a.timestamp(), 
     463                                        wformat(hal::app().res_wstr(HAL_BLOCK_FINISHED_ALERT)) 
     464                                                % get(a.handle).name() 
     465                                                % a.block_index 
     466                                                % a.piece_index) 
     467                        )       );                               
     468                } 
     469                 
     470                void operator()(lbt::block_downloading_alert const& a) const 
     471                { 
     472                        event().post(shared_ptr<EventDetail>( 
     473                                new EventGeneral(Event::debug, a.timestamp(), 
     474                                        wformat(hal::app().res_wstr(HAL_BLOCK_DOWNLOADING_ALERT)) 
     475                                                % get(a.handle).name() 
     476                                                % a.block_index 
     477                                                % a.piece_index) 
    430478                        )       );                               
    431479                } 
     
    464512                                lbt::tracker_announce_alert, 
    465513                                lbt::tracker_reply_alert, 
     514                                lbt::fastresume_rejected_alert, 
     515                                lbt::piece_finished_alert, 
     516                                lbt::block_finished_alert, 
     517                                lbt::block_downloading_alert, 
    466518                                lbt::alert 
    467519                        >::handle_alert(p_alert, handler);                       
     
    615667        bool keepChecking_; 
    616668         
    617 //      TorrentMap torrents; 
    618         TorrentManager theTorrents; 
    619          
    620 /*      TorrentInternal& getTorrent(lbt::torrent_handle h) 
    621         { 
    622                 TorrentMap::iterator i = torrents.find(h.get_torrent_info().name()); 
    623          
    624                 if (i != torrents.end()) 
    625                         return (*i).second; 
    626                  
    627                 throw lbt::invalid_handle(); 
    628         } 
    629 */       
     669        TorrentManager theTorrents;      
    630670        const wpath workingDirectory; 
    631671         
     
    10081048                                catch(...) 
    10091049                                { 
    1010                                         hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::info, from_utf8((format("Invalid IP range: %1%-%2%.") % first % last).str())))); 
     1050                                        hal::event().post(shared_ptr<hal::EventDetail>( 
     1051                                                new hal::EventDebug(hal::Event::info,  
     1052                                                        from_utf8((format("Invalid IP range: %1%-%2%.") % first % last).str())))); 
    10111053                                } 
    10121054                        } 
     
    11191161        { 
    11201162                TorrentInternal& me = pimpl->theTorrents.get(torrent.name()); 
    1121                 TorrentManager::torrentByName::iterator i = p.first; 
    11221163                 
    11231164                me.setTransferSpeed(bittorrent().defTorrentDownload(), bittorrent().defTorrentUpload()); 
     
    12881329                        catch(const lbt::duplicate_torrent&) 
    12891330                        { 
    1290                                 hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventDebug(hal::Event::debug, L"Encountered duplicate torrent"))); 
     1331                                hal::event().post(shared_ptr<hal::EventDetail>( 
     1332                                        new hal::EventDebug(hal::Event::debug, L"Encountered duplicate torrent"))); 
    12911333                                 
    12921334                                ++i; // Harmless, don't worry about it. 
     
    12941336                        catch(const std::exception& e)  
    12951337                        { 
    1296                                 hal::event().post(shared_ptr<hal::EventDetail>(new hal::EventStdException(hal::Event::warning, e, L"resumeAll"))); 
     1338                                hal::event().post(shared_ptr<hal::EventDetail>( 
     1339                                        new hal::EventStdException(hal::Event::warning, e, L"resumeAll"))); 
    12971340                                 
    12981341                                pimpl->theTorrents.erase(i++); 
     
    13251368                if ((*i).torrent.inSession()) 
    13261369                { 
    1327                         (*i).torrent.handle().pause(); // NB. internal pause, not registered in Torrents.xml 
     1370                        (*i).torrent.handle().pause(); // Internal pause, not registered in Torrents.xml 
    13281371                } 
    13291372        } 
  • src/halTorrent.hpp

    r292 r293  
    131131                        float c=0, float d=0, boost::int64_t tWD=0, boost::int64_t tW=0, boost::int64_t tU=0, boost::int64_t tpU=0, boost::int64_t tD=0, boost::int64_t tpD=0, int prs=0, int prsCnt=0, int sds=0, int sdsCnt=0,  float r=0,  
    132132                        time_duration eta=boost::posix_time::seconds(0), time_duration uIn=boost::posix_time::seconds(0), 
    133                         time_duration actve=boost::posix_time::seconds(0), time_duration seding=boost::posix_time::seconds(0), ptime srt=boost::posix_time::second_clock::universal_time()) : 
     133                        time_duration actve=boost::posix_time::seconds(0), time_duration seding=boost::posix_time::seconds(0), ptime srt=boost::posix_time::second_clock::universal_time(), ptime fin=boost::posix_time::second_clock::universal_time()) : 
    134134                filename_(f), 
    135135                name_(n), 
     
    156156                active_(actve), 
    157157                seeding_(seding), 
    158                 startTime_(srt) 
     158                startTime_(srt), 
     159                finishTime_(fin) 
    159160        {} 
    160161 
     
    205206        const time_duration& seeding() { return seeding_; } 
    206207        const ptime& startTime() { return startTime_; } 
     208        const ptime& finishTime() { return finishTime_; } 
    207209         
    208210public: 
     
    236238        time_duration seeding_; 
    237239        ptime startTime_; 
     240        ptime finishTime_; 
    238241         
    239242private: 
  • src/halTorrentInternal.hpp

    r292 r293  
    77#pragma once 
    88 
    9 #define HAL_PEER_INTERESTING            40037 
    10 #define HAL_PEER_CHOKED                 40038 
    11 #define HAL_PEER_REMOTE_INTERESTING     40039 
    12 #define HAL_PEER_REMOTE_CHOKED          40040 
    13 #define HAL_PEER_SUPPORT_EXTENSIONS     40041 
    14 #define HAL_PEER_LOCAL_CONNECTION       40042 
    15 #define HAL_PEER_HANDSHAKE              40043 
    16 #define HAL_PEER_CONNECTING             40044 
    17 #define HAL_PEER_QUEUED                 40045 
    18 #define HAL_PEER_RC4_ENCRYPTED          40046 
    19 #define HAL_PEER_PLAINTEXT_ENCRYPTED    40047 
    20 #define HAL_TORRENT_QUEUED_CHECKING     40050 
    21 #define HAL_TORRENT_CHECKING_FILES      40051 
    22 #define HAL_TORRENT_CONNECTING          40052 
    23 #define HAL_TORRENT_DOWNLOADING         40053 
    24 #define HAL_TORRENT_FINISHED            40054 
    25 #define HAL_TORRENT_SEEDING             40055 
    26 #define HAL_TORRENT_ALLOCATING          40056 
    27 #define HAL_TORRENT_QUEUED              40057 
    28 #define HAL_TORRENT_STOPPED             40058 
    29 #define HAL_TORRENT_PAUSED              40059 
    30 #define HAL_TORRENT_STOPPING            50000 
    31 #define HAL_TORRENT_PAUSING             50001 
     9#define HAL_PEER_INTERESTING                                    40037 
     10#define HAL_PEER_CHOKED                                     40038 
     11#define HAL_PEER_REMOTE_INTERESTING                                     40039 
     12#define HAL_PEER_REMOTE_CHOKED                                          40040 
     13#define HAL_PEER_SUPPORT_EXTENSIONS                                     40041 
     14#define HAL_PEER_LOCAL_CONNECTION                                       40042 
     15#define HAL_PEER_HANDSHAKE                                                      40043 
     16#define HAL_PEER_CONNECTING                                                     40044 
     17#define HAL_PEER_QUEUED                                                         40045 
     18#define HAL_PEER_RC4_ENCRYPTED                                          40046 
     19#define HAL_PEER_PLAINTEXT_ENCRYPTED                            40047 
     20#define HAL_TORRENT_QUEUED_CHECKING                                     40050 
     21#define HAL_TORRENT_CHECKING_FILES                                      40051 
     22#define HAL_TORRENT_CONNECTING                                          40052 
     23#define HAL_TORRENT_DOWNLOADING                                         40053 
     24#define HAL_TORRENT_FINISHED                                            40054 
     25#define HAL_TORRENT_SEEDING                                                     40055 
     26#define HAL_TORRENT_ALLOCATING                                          40056 
     27#define HAL_TORRENT_QUEUED                                                      40057 
     28#define HAL_TORRENT_STOPPED                                                     40058 
     29#define HAL_TORRENT_PAUSED                                                      40059 
     30#define HAL_TORRENT_STOPPING                                            50000 
     31#define HAL_TORRENT_PAUSING                                                     50001 
    3232 
    3333#ifndef RC_INVOKED 
     
    4545} 
    4646 
    47 BOOST_CLASS_VERSION(hal::TorrentInternal, 9) 
     47BOOST_CLASS_VERSION(hal::TorrentInternal, 10) 
    4848 
    4949namespace hal  
     
    331331        } 
    332332         
     333        void finished() 
     334        { 
     335                if (finishTime_.is_special()) 
     336                        finishTime_ = boost::posix_time::second_clock::universal_time(); 
     337        } 
     338         
    333339        bool isActive() const { return state_ == TorrentDetail::torrent_active; } 
    334340         
     
    456462                if (version > 7) { 
    457463                        ar & make_nvp("compactStorage", compactStorage_);                
     464                }        
     465                if (version > 9) { 
     466                        ar & make_nvp("finishTime", finishTime_);                
    458467                }                
    459468    } 
     
    559568        } 
    560569 
    561 private: 
    562          
     570private:         
    563571        void applySettings() 
    564572        {                
     
    680688         
    681689        boost::posix_time::ptime startTime_; 
     690        boost::posix_time::ptime finishTime_; 
    682691        DurationTracker activeDuration_; 
    683692        DurationTracker seedingDuration_; 
     
    835844        uploads_ = maxUpload; 
    836845         
    837                 ::MessageBoxA(0, "Here Alright.", "Hi", 0); 
    838846        applyConnectionLimit(); 
    839847} 
     
    864872        { 
    865873                statusMemory_ = handle_.status(); 
    866                 name_ = hal::from_utf8_safe(handle_.get_torrent_info().name()); 
     874                //name_ = hal::from_utf8_safe(handle_.get_torrent_info().name()); 
    867875        } 
    868876         
     
    936944        { 
    937945                activeDuration_.update(); 
    938         } 
     946                 
     947                if (handle_.is_seed()) 
     948                        seedingDuration_.update(); 
     949        }        
    939950         
    940951        updatePeers(); 
     
    968979                pair<float, float>(statusMemory_.download_payload_rate, statusMemory_.upload_payload_rate), 
    969980                statusMemory_.progress, statusMemory_.distributed_copies, statusMemory_.total_wanted_done, statusMemory_.total_wanted, uploaded_, payloadUploaded_, 
    970                 downloaded_, payloadDownloaded_, totalPeers, peersConnected, totalSeeds, seedsConnected, ratio_, td, statusMemory_.next_announce, activeDuration_, seedingDuration_, startTime_)); 
     981                downloaded_, payloadDownloaded_, totalPeers, peersConnected, totalSeeds, seedsConnected, ratio_, td, statusMemory_.next_announce, activeDuration_, seedingDuration_, startTime_, finishTime_)); 
    971982 
    972983        } 
Note: See TracChangeset for help on using the changeset viewer.