source: trunk/qt/session.h @ 13683

Last change on this file since 13683 was 13683, checked in by jordan, 8 years ago

(trunk, libT) first drop of the tr_quark patch.

  • Property svn:keywords set to Date Rev Author Id
File size: 5.5 KB
Line 
1/*
2 * This file Copyright (C) Mnemosyne LLC
3 *
4 * This program is free software; you can redistribute it and/or modify
5 * it under the terms of the GNU General Public License version 2
6 * as published by the Free Software Foundation.
7 *
8 * http://www.gnu.org/licenses/old-licenses/gpl-2.0.html
9 *
10 * $Id: session.h 13683 2012-12-22 20:35:19Z jordan $
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 <QNetworkAccessManager>
21#include <QString>
22#include <QUrl>
23
24class QStringList;
25
26class AddData;
27
28#include <libtransmission/transmission.h>
29#include <libtransmission/quark.h>
30
31extern "C"
32{
33    struct evbuffer;
34    struct tr_variant;
35}
36
37class Prefs;
38
39class Session: public QObject
40{
41        Q_OBJECT
42
43    public:
44        Session( const char * configDir, Prefs& prefs );
45        ~Session( );
46
47    public:
48        void stop( );
49        void restart( );
50
51    private:
52        void start( );
53
54    public:
55        const QUrl& getRemoteUrl( ) const { return myUrl; }
56        const struct tr_session_stats& getStats( ) const { return myStats; }
57        const struct tr_session_stats& getCumulativeStats( ) const { return myCumulativeStats; }
58        const QString& sessionVersion( ) const { return mySessionVersion; }
59
60    public:
61        int64_t blocklistSize( ) const { return myBlocklistSize; }
62        void setBlocklistSize( int64_t i );
63        void updateBlocklist( );
64        void portTest( );
65        void copyMagnetLinkToClipboard( int torrentId );
66
67    public:
68
69        /** returns true if the transmission session is being run inside this client */
70        bool isServer( ) const;
71
72        /** returns true if isServer() is true or if the remote address is the localhost */
73        bool isLocal( ) const;
74
75    private:
76        void updateStats( struct tr_variant * args );
77        void updateInfo( struct tr_variant * args );
78        void parseResponse( const char * json, size_t len );
79        static void localSessionCallback( tr_session *, struct evbuffer *, void * );
80
81    public:
82        void exec( const char * json );
83        void exec( const struct tr_variant * request );
84
85    public:
86        int64_t getUniqueTag( ) { return nextUniqueTag++; }
87
88    private:
89        void sessionSet( const tr_quark key, const QVariant& variant );
90        void pumpRequests( );
91        void sendTorrentRequest( const char * request, const QSet<int>& torrentIds );
92        static void updateStats( struct tr_variant * d, struct tr_session_stats * stats );
93        void refreshTorrents( const QSet<int>& torrentIds );
94        QNetworkAccessManager * networkAccessManager( );
95
96    public:
97        void torrentSet( const QSet<int>& ids, const tr_quark key, bool val );
98        void torrentSet( const QSet<int>& ids, const tr_quark key, int val );
99        void torrentSet( const QSet<int>& ids, const tr_quark key, double val );
100        void torrentSet( const QSet<int>& ids, const tr_quark key, const QList<int>& val );
101        void torrentSet( const QSet<int>& ids, const tr_quark key, const QStringList& val );
102        void torrentSet( const QSet<int>& ids, const tr_quark key, const QPair<int,QString>& val);
103        void torrentSetLocation( const QSet<int>& ids, const QString& path, bool doMove );
104
105
106    public slots:
107        void pauseTorrents( const QSet<int>& torrentIds = QSet<int>() );
108        void startTorrents( const QSet<int>& torrentIds = QSet<int>() );
109        void startTorrentsNow( const QSet<int>& torrentIds = QSet<int>() );
110        void queueMoveTop( const QSet<int>& torrentIds = QSet<int>() );
111        void queueMoveUp( const QSet<int>& torrentIds = QSet<int>() );
112        void queueMoveDown( const QSet<int>& torrentIds = QSet<int>() );
113        void queueMoveBottom( const QSet<int>& torrentIds = QSet<int>() );
114        void refreshSessionInfo( );
115        void refreshSessionStats( );
116        void refreshActiveTorrents( );
117        void refreshAllTorrents( );
118        void initTorrents( const QSet<int>& ids = QSet<int>() );
119        void addNewlyCreatedTorrent( const QString& filename, const QString& localPath );
120        void addTorrent( const AddData& addme );
121        void removeTorrents( const QSet<int>& torrentIds, bool deleteFiles=false );
122        void verifyTorrents( const QSet<int>& torrentIds );
123        void reannounceTorrents( const QSet<int>& torrentIds );
124        void launchWebInterface( );
125        void updatePref( int key );
126
127        /** request a refresh for statistics, including the ones only used by the properties dialog, for a specific torrent */
128        void refreshExtraStats( const QSet<int>& ids );
129
130    private slots:
131        void onFinished( QNetworkReply * reply );
132
133    signals:
134        void executed( int64_t tag, const QString& result, struct tr_variant * arguments );
135        void sourceChanged( );
136        void portTested( bool isOpen );
137        void statsUpdated( );
138        void sessionUpdated( );
139        void blocklistUpdated( int );
140        void torrentsUpdated( struct tr_variant * torrentList, bool completeList );
141        void torrentsRemoved( struct tr_variant * torrentList );
142        void dataReadProgress( );
143        void dataSendProgress( );
144        void httpAuthenticationRequired( );
145
146    private:
147        int64_t nextUniqueTag;
148        int64_t myBlocklistSize;
149        Prefs& myPrefs;
150        tr_session * mySession;
151        QString myConfigDir;
152        QString mySessionId;
153        QUrl myUrl;
154        QNetworkAccessManager * myNAM;
155        struct tr_session_stats myStats;
156        struct tr_session_stats myCumulativeStats;
157        QString mySessionVersion;
158};
159
160#endif
161
Note: See TracBrowser for help on using the repository browser.