source: trunk/qt/session.h @ 14241

Last change on this file since 14241 was 14241, checked in by jordan, 9 years ago

Copyedit the license's revised text: (1) remove unnecessary repitition use of the word 'license' from the top of the header and source files (2) add the standard 'we hope it's useful, but no warranty' clause to COPYING (3) make explicit that linking OpenSSL is allowed (see https://people.gnome.org/~markmc/openssl-and-the-gpl.html for background) (4) sync the Qt and GTK+ clients' license popups with COPYING's revised text

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