source: trunk/qt/session.h @ 8232

Last change on this file since 8232 was 8232, checked in by charles, 13 years ago

(trunk qt) clean up #includes

File size: 4.1 KB
Line 
1/*
2 * This file Copyright (C) 2009 Charles Kerr <charles@transmissionbt.com>
3 *
4 * This file is licensed by the GPL version 2.  Works owned by the
5 * Transmission project are granted a special exemption to clause 2(b)
6 * so that the bulk of its code can remain under the MIT license.
7 * This exemption does not extend to derived works not owned by
8 * the Transmission project.
9 *
10 * $Id:$
11 */
12
13#ifndef TR_APP_SESSION_H
14#define TR_APP_SESSION_H
15
16#include <QObject>
17#include <QSet>
18#include <QBuffer>
19#include <QFileInfoList>
20#include <QString>
21#include <QHttp>
22#include <QUrl>
23
24#include <libtransmission/transmission.h>
25
26#include "speed.h"
27
28extern "C"
29{
30    struct tr_benc;
31}
32
33class Prefs;
34
35class Session: public QObject
36{
37        Q_OBJECT
38
39    public:
40        Session( const char * configDir, Prefs& prefs, const char * remoteUrl, bool paused );
41        ~Session( );
42
43        static const int ADD_TORRENT_TAG;
44
45    public:
46        const QUrl& getRemoteUrl( ) const { return myUrl; }
47        const struct tr_session_stats& getStats( ) const { return myStats; }
48        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
49        const QString& sessionVersion( ) const { return mySessionVersion; }
50
51    public:
52        int64_t blocklistSize( ) const { return myBlocklistSize; }
53        void setBlocklistSize( int64_t i );
54        void updateBlocklist( );
55        void portTest( );
56
57    public:
58        bool isRemote( ) const { return !isLocal( ); }
59        bool isLocal( ) const;
60        bool isServer( ) const;
61
62    private:
63        void updateStats( struct tr_benc * args );
64        void updateInfo( struct tr_benc * args );
65        void parseResponse( const char * json, size_t len );
66        static void localSessionCallback( tr_session *, const char *, size_t, void * );
67
68    public:
69        void exec( const char * request );
70        void exec( const struct tr_benc * request );
71
72    private:
73        void sessionSet( const char * key, const QVariant& variant );
74        void pumpRequests( );
75        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
76        static void updateStats( struct tr_benc * d, struct tr_session_stats * stats );
77        void refreshTorrents( const QSet<int>& torrentIds );
78
79    public:
80        void torrentSet( int id, const QString& key, bool val );
81        void torrentSet( int id, const QString& key, int val );
82        void torrentSet( int id, const QString& key, double val );
83        void torrentSet( int id, const QString& key, const QList<int>& val );
84
85    public slots:
86        void pause( const QSet<int>& torrentIds = QSet<int>() );
87        void start( const QSet<int>& torrentIds = QSet<int>() );
88        void refreshSessionInfo( );
89        void refreshSessionStats( );
90        void refreshActiveTorrents( );
91        void refreshAllTorrents( );
92        void initTorrents( const QSet<int>& ids = QSet<int>() );
93        void addTorrent( QString filename );
94        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
95        void verifyTorrents( const QSet<int>& torrentIds );
96        void reannounceTorrents( const QSet<int>& torrentIds );
97        void launchWebInterface( );
98        void updatePref( int key );
99
100        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
101        void refreshExtraStats( int torrent );
102
103    private slots:
104        void onRequestStarted( int id );
105        void onRequestFinished( int id, bool error );
106
107    signals:
108        void portTested( bool isOpen );
109        void statsUpdated( );
110        void sessionUpdated( );
111        void blocklistUpdated( int );
112        void torrentsUpdated( struct tr_benc * torrentList, bool completeList );
113        void torrentsRemoved( struct tr_benc * torrentList );
114        void dataReadProgress( );
115        void dataSendProgress( );
116
117    private:
118        int64_t myBlocklistSize;
119        Prefs& myPrefs;
120        tr_session * mySession;
121        QUrl myUrl;
122        QBuffer myBuffer;
123        QHttp myHttp;
124        struct tr_session_stats myStats;
125        struct tr_session_stats myCumulativeStats;
126        QString mySessionVersion;
127};
128
129#endif
130
Note: See TracBrowser for help on using the repository browser.