utilities/downloadmanager/src/downloadmanagerclient.cpp
author hgs
Fri, 15 Oct 2010 17:30:59 -0400
changeset 16 3c88a81ff781
permissions -rw-r--r--
201041
Ignore whitespace changes - Everywhere: Within whitespace: At end of lines:
16
hgs
parents:
diff changeset
     1
/**
hgs
parents:
diff changeset
     2
   This file is part of CWRT package **
hgs
parents:
diff changeset
     3
hgs
parents:
diff changeset
     4
   Copyright (C) 2009 Nokia Corporation and/or its subsidiary(-ies). **
hgs
parents:
diff changeset
     5
hgs
parents:
diff changeset
     6
   This program is free software: you can redistribute it and/or modify
hgs
parents:
diff changeset
     7
   it under the terms of the GNU (Lesser) General Public License as
hgs
parents:
diff changeset
     8
   published by the Free Software Foundation, version 2.1 of the License.
hgs
parents:
diff changeset
     9
   This program is distributed in the hope that it will be useful, but
hgs
parents:
diff changeset
    10
   WITHOUT ANY WARRANTY; without even the implied warranty of
hgs
parents:
diff changeset
    11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU
hgs
parents:
diff changeset
    12
   (Lesser) General Public License for more details. You should have
hgs
parents:
diff changeset
    13
   received a copy of the GNU (Lesser) General Public License along
hgs
parents:
diff changeset
    14
   with this program. If not, see <http://www.gnu.org/licenses/>.
hgs
parents:
diff changeset
    15
*/
hgs
parents:
diff changeset
    16
hgs
parents:
diff changeset
    17
#include "downloadmanagerclient.h"
hgs
parents:
diff changeset
    18
#include "backgrounddownloadmanager.h"
hgs
parents:
diff changeset
    19
#include "backgrounddownload.h"
hgs
parents:
diff changeset
    20
#include <serviceipc.h>
hgs
parents:
diff changeset
    21
#include <QTimer>
hgs
parents:
diff changeset
    22
#include <QtNetwork>
hgs
parents:
diff changeset
    23
hgs
parents:
diff changeset
    24
class DownloadManagerClientPrivate
hgs
parents:
diff changeset
    25
{
hgs
parents:
diff changeset
    26
    DM_DECLARE_PUBLIC(DownloadManagerClient);
hgs
parents:
diff changeset
    27
public:
hgs
parents:
diff changeset
    28
    DownloadManagerClientPrivate();
hgs
parents:
diff changeset
    29
    ~DownloadManagerClientPrivate();
hgs
parents:
diff changeset
    30
    QString m_clientName;
hgs
parents:
diff changeset
    31
    bool m_isConnected;
hgs
parents:
diff changeset
    32
    int m_error;
hgs
parents:
diff changeset
    33
    WRT::ServiceFwIPC* m_session;
hgs
parents:
diff changeset
    34
    DownloadManager* m_downloadManager;
hgs
parents:
diff changeset
    35
    QTimer* m_timer;
hgs
parents:
diff changeset
    36
};
hgs
parents:
diff changeset
    37
hgs
parents:
diff changeset
    38
DownloadManagerClientPrivate::DownloadManagerClientPrivate()
hgs
parents:
diff changeset
    39
{
hgs
parents:
diff changeset
    40
    m_clientName = "";
hgs
parents:
diff changeset
    41
    m_isConnected = false;
hgs
parents:
diff changeset
    42
    m_error = 0;
hgs
parents:
diff changeset
    43
    m_session = 0;
hgs
parents:
diff changeset
    44
    m_downloadManager = 0;
hgs
parents:
diff changeset
    45
    m_timer = 0;
hgs
parents:
diff changeset
    46
}
hgs
parents:
diff changeset
    47
hgs
parents:
diff changeset
    48
DownloadManagerClientPrivate::~DownloadManagerClientPrivate()
hgs
parents:
diff changeset
    49
{
hgs
parents:
diff changeset
    50
    if (m_timer) {
hgs
parents:
diff changeset
    51
        if (m_timer->isActive())
hgs
parents:
diff changeset
    52
            m_timer->stop();
hgs
parents:
diff changeset
    53
        delete m_timer;
hgs
parents:
diff changeset
    54
        m_timer = 0;
hgs
parents:
diff changeset
    55
    }
hgs
parents:
diff changeset
    56
hgs
parents:
diff changeset
    57
    if (m_session) {
hgs
parents:
diff changeset
    58
        m_session->disconnect();
hgs
parents:
diff changeset
    59
        delete m_session;
hgs
parents:
diff changeset
    60
        m_session = 0;
hgs
parents:
diff changeset
    61
    }
hgs
parents:
diff changeset
    62
}
hgs
parents:
diff changeset
    63
hgs
parents:
diff changeset
    64
DownloadManagerClient::DownloadManagerClient(DownloadManager* downloadManager)
hgs
parents:
diff changeset
    65
{
hgs
parents:
diff changeset
    66
    DM_INITIALIZE(DownloadManagerClient);
hgs
parents:
diff changeset
    67
    priv->m_downloadManager = downloadManager;
hgs
parents:
diff changeset
    68
    priv->m_timer = new QTimer;
hgs
parents:
diff changeset
    69
    priv->m_clientName = downloadManager->getAttribute(DlMgrClientName).toString();
hgs
parents:
diff changeset
    70
    priv->m_session = new WRT::ServiceFwIPC(this);
hgs
parents:
diff changeset
    71
    connect(priv->m_session, SIGNAL(error(int aError)), this, SLOT(setServerError(int error)));
hgs
parents:
diff changeset
    72
    connect(priv->m_timer, SIGNAL(timeout()), this, SLOT(getEvents()));
hgs
parents:
diff changeset
    73
hgs
parents:
diff changeset
    74
    // establish communication with server
hgs
parents:
diff changeset
    75
    initServer();
hgs
parents:
diff changeset
    76
}
hgs
parents:
diff changeset
    77
hgs
parents:
diff changeset
    78
DownloadManagerClient::~DownloadManagerClient()
hgs
parents:
diff changeset
    79
{
hgs
parents:
diff changeset
    80
    DM_UNINITIALIZE(DownloadManagerClient);
hgs
parents:
diff changeset
    81
}
hgs
parents:
diff changeset
    82
hgs
parents:
diff changeset
    83
bool DownloadManagerClient::initServer()
hgs
parents:
diff changeset
    84
{
hgs
parents:
diff changeset
    85
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
    86
hgs
parents:
diff changeset
    87
    // start server (if required) and connect to it
hgs
parents:
diff changeset
    88
    connectToServer();
hgs
parents:
diff changeset
    89
hgs
parents:
diff changeset
    90
    if (priv->m_isConnected) {
hgs
parents:
diff changeset
    91
        // set startup details - proxy, download path, progress mode
hgs
parents:
diff changeset
    92
        // and attach to downloads
hgs
parents:
diff changeset
    93
        setStartupInfo();
hgs
parents:
diff changeset
    94
hgs
parents:
diff changeset
    95
        // start timer to get events from server
hgs
parents:
diff changeset
    96
        priv->m_timer->start(EVENTS_REQUEST_INTERVAL);
hgs
parents:
diff changeset
    97
        priv->m_downloadManager->postEvent(ConnectedToServer, NULL);
hgs
parents:
diff changeset
    98
    }
hgs
parents:
diff changeset
    99
hgs
parents:
diff changeset
   100
    return priv->m_isConnected;
hgs
parents:
diff changeset
   101
}
hgs
parents:
diff changeset
   102
hgs
parents:
diff changeset
   103
bool DownloadManagerClient::connectToServer()
hgs
parents:
diff changeset
   104
{
hgs
parents:
diff changeset
   105
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   106
    if (priv->m_session) {
hgs
parents:
diff changeset
   107
        int retry(2);
hgs
parents:
diff changeset
   108
        for (;;)
hgs
parents:
diff changeset
   109
        {
hgs
parents:
diff changeset
   110
            priv->m_isConnected = priv->m_session->connect(DMSERVER);
hgs
parents:
diff changeset
   111
            if (priv->m_isConnected) {
hgs
parents:
diff changeset
   112
                break;
hgs
parents:
diff changeset
   113
            }
hgs
parents:
diff changeset
   114
            else {
hgs
parents:
diff changeset
   115
                if (!priv->m_session->startServer(DMSERVER, DMSERVEREXE)) {
hgs
parents:
diff changeset
   116
                    // start server failed.
hgs
parents:
diff changeset
   117
                    break;
hgs
parents:
diff changeset
   118
                }
hgs
parents:
diff changeset
   119
            }
hgs
parents:
diff changeset
   120
            if (0==--retry) {
hgs
parents:
diff changeset
   121
                break;
hgs
parents:
diff changeset
   122
            }
hgs
parents:
diff changeset
   123
        }
hgs
parents:
diff changeset
   124
    }
hgs
parents:
diff changeset
   125
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   126
        delete priv->m_session;
hgs
parents:
diff changeset
   127
        priv->m_session = 0;
hgs
parents:
diff changeset
   128
    }
hgs
parents:
diff changeset
   129
hgs
parents:
diff changeset
   130
    return priv->m_isConnected;
hgs
parents:
diff changeset
   131
}
hgs
parents:
diff changeset
   132
hgs
parents:
diff changeset
   133
void DownloadManagerClient::setStartupInfo()
hgs
parents:
diff changeset
   134
{
hgs
parents:
diff changeset
   135
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   136
    if (!priv->m_isConnected)
hgs
parents:
diff changeset
   137
        return;
hgs
parents:
diff changeset
   138
hgs
parents:
diff changeset
   139
    if (priv->m_downloadManager) {
hgs
parents:
diff changeset
   140
        // get data from download manager
hgs
parents:
diff changeset
   141
        QNetworkProxy* proxy = priv->m_downloadManager->proxy();
hgs
parents:
diff changeset
   142
        QString dlPath = priv->m_downloadManager->getAttribute(DlMgrDestPath).toString();
hgs
parents:
diff changeset
   143
        int progressMode = priv->m_downloadManager->getAttribute(DlMgrProgressMode).toInt();
hgs
parents:
diff changeset
   144
        int persistantMode = priv->m_downloadManager->getAttribute(DlMgrPersistantMode).toInt();
hgs
parents:
diff changeset
   145
        QString data;
hgs
parents:
diff changeset
   146
hgs
parents:
diff changeset
   147
        // client name
hgs
parents:
diff changeset
   148
        data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   149
hgs
parents:
diff changeset
   150
        // proxy info
hgs
parents:
diff changeset
   151
        if (proxy) {
hgs
parents:
diff changeset
   152
            data.append(DM_MSG_DELIMITER);
hgs
parents:
diff changeset
   153
            data.append(QString::number(SetProxy));
hgs
parents:
diff changeset
   154
            data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   155
            data.append(encodeString(proxy->hostName()));
hgs
parents:
diff changeset
   156
            data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   157
            data.append(QString::number(proxy->port()));
hgs
parents:
diff changeset
   158
        }
hgs
parents:
diff changeset
   159
hgs
parents:
diff changeset
   160
        // download path
hgs
parents:
diff changeset
   161
        data.append(DM_MSG_DELIMITER);
hgs
parents:
diff changeset
   162
        data.append(QString::number(SetDownloadManagerAttribute));
hgs
parents:
diff changeset
   163
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   164
        data.append(QString::number(DlMgrDestPath));
hgs
parents:
diff changeset
   165
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   166
        data.append(encodeString(dlPath));
hgs
parents:
diff changeset
   167
hgs
parents:
diff changeset
   168
        // progress mode (quiet/non-quiet)
hgs
parents:
diff changeset
   169
        data.append(DM_MSG_DELIMITER);
hgs
parents:
diff changeset
   170
        data.append(QString::number(SetDownloadManagerAttribute));
hgs
parents:
diff changeset
   171
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   172
        data.append(QString::number(DlMgrProgressMode));
hgs
parents:
diff changeset
   173
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   174
        data.append(encodeString(QString::number(progressMode)));
hgs
parents:
diff changeset
   175
hgs
parents:
diff changeset
   176
        // persistant mode (active / inactive)
hgs
parents:
diff changeset
   177
        data.append(DM_MSG_DELIMITER);
hgs
parents:
diff changeset
   178
        data.append(QString::number(SetDownloadManagerAttribute));
hgs
parents:
diff changeset
   179
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   180
        data.append(QString::number(DlMgrPersistantMode));
hgs
parents:
diff changeset
   181
        data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   182
        data.append(encodeString(QString::number(persistantMode)));
hgs
parents:
diff changeset
   183
hgs
parents:
diff changeset
   184
        // send to sever
hgs
parents:
diff changeset
   185
        if (priv->m_session->sendSync(QString::number(StartupInfo), data.toAscii()))
hgs
parents:
diff changeset
   186
            priv->m_session->readAll();
hgs
parents:
diff changeset
   187
    }
hgs
parents:
diff changeset
   188
}
hgs
parents:
diff changeset
   189
hgs
parents:
diff changeset
   190
void DownloadManagerClient::setProxy(const QString& proxyServer, const int port)
hgs
parents:
diff changeset
   191
{
hgs
parents:
diff changeset
   192
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   193
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   194
        if (!initServer())
hgs
parents:
diff changeset
   195
            return;
hgs
parents:
diff changeset
   196
    }
hgs
parents:
diff changeset
   197
hgs
parents:
diff changeset
   198
    // create string to send
hgs
parents:
diff changeset
   199
    QString data;
hgs
parents:
diff changeset
   200
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   201
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   202
    data.append(encodeString(proxyServer));
hgs
parents:
diff changeset
   203
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   204
    data.append(QString::number(port));
hgs
parents:
diff changeset
   205
hgs
parents:
diff changeset
   206
    // send to sever
hgs
parents:
diff changeset
   207
    if (priv->m_session->sendSync(QString::number(SetProxy), data.toAscii()))
hgs
parents:
diff changeset
   208
        priv->m_session->readAll();
hgs
parents:
diff changeset
   209
    else
hgs
parents:
diff changeset
   210
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   211
}
hgs
parents:
diff changeset
   212
hgs
parents:
diff changeset
   213
int DownloadManagerClient::createDownload(const QString& url, DownloadType type)
hgs
parents:
diff changeset
   214
{
hgs
parents:
diff changeset
   215
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   216
    int downloadId(INVALID_DL_ID);
hgs
parents:
diff changeset
   217
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   218
        if (!initServer())
hgs
parents:
diff changeset
   219
            return downloadId;
hgs
parents:
diff changeset
   220
    }
hgs
parents:
diff changeset
   221
hgs
parents:
diff changeset
   222
    // create string to send
hgs
parents:
diff changeset
   223
    QString data;
hgs
parents:
diff changeset
   224
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   225
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   226
    data.append(encodeString(url));
hgs
parents:
diff changeset
   227
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   228
    data.append(QString::number(type));
hgs
parents:
diff changeset
   229
hgs
parents:
diff changeset
   230
    // send to sever
hgs
parents:
diff changeset
   231
    if (priv->m_session->sendSync(QString::number(CreateDownload), data.toAscii())) {
hgs
parents:
diff changeset
   232
        // expected response is
hgs
parents:
diff changeset
   233
        // list[0] -> downloadId
hgs
parents:
diff changeset
   234
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   235
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   236
        if (list.count() == 1)
hgs
parents:
diff changeset
   237
            downloadId = list[0].toInt();
hgs
parents:
diff changeset
   238
    }
hgs
parents:
diff changeset
   239
    else {
hgs
parents:
diff changeset
   240
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   241
    }
hgs
parents:
diff changeset
   242
    return downloadId;
hgs
parents:
diff changeset
   243
}
hgs
parents:
diff changeset
   244
hgs
parents:
diff changeset
   245
bool DownloadManagerClient::attachToDownload(int dlId)
hgs
parents:
diff changeset
   246
{
hgs
parents:
diff changeset
   247
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   248
    bool status(false);
hgs
parents:
diff changeset
   249
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   250
        if (!initServer())
hgs
parents:
diff changeset
   251
            return status;
hgs
parents:
diff changeset
   252
    }
hgs
parents:
diff changeset
   253
hgs
parents:
diff changeset
   254
    // create string to send
hgs
parents:
diff changeset
   255
    QString data;
hgs
parents:
diff changeset
   256
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   257
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   258
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   259
hgs
parents:
diff changeset
   260
    // send to sever
hgs
parents:
diff changeset
   261
    if (priv->m_session->sendSync(QString::number(AttachToDownload), data.toAscii())) {
hgs
parents:
diff changeset
   262
        // expected response is
hgs
parents:
diff changeset
   263
	// list[1] -> status
hgs
parents:
diff changeset
   264
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   265
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   266
        if (list.count() == 1) {
hgs
parents:
diff changeset
   267
            status = list[0].toInt();
hgs
parents:
diff changeset
   268
	}
hgs
parents:
diff changeset
   269
    }
hgs
parents:
diff changeset
   270
    else {
hgs
parents:
diff changeset
   271
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   272
    }
hgs
parents:
diff changeset
   273
	
hgs
parents:
diff changeset
   274
    return status;
hgs
parents:
diff changeset
   275
}
hgs
parents:
diff changeset
   276
hgs
parents:
diff changeset
   277
void DownloadManagerClient::removeDownload(int downloadId)
hgs
parents:
diff changeset
   278
{
hgs
parents:
diff changeset
   279
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   280
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   281
        if (!initServer())
hgs
parents:
diff changeset
   282
            return;
hgs
parents:
diff changeset
   283
    }
hgs
parents:
diff changeset
   284
hgs
parents:
diff changeset
   285
    // create string to send
hgs
parents:
diff changeset
   286
    QString data;
hgs
parents:
diff changeset
   287
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   288
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   289
    data.append(QString::number(downloadId));
hgs
parents:
diff changeset
   290
hgs
parents:
diff changeset
   291
    // send to sever
hgs
parents:
diff changeset
   292
    if (priv->m_session->sendSync(QString::number(RemoveDownload), data.toAscii()))
hgs
parents:
diff changeset
   293
        priv->m_session->readAll();
hgs
parents:
diff changeset
   294
    else
hgs
parents:
diff changeset
   295
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   296
}
hgs
parents:
diff changeset
   297
hgs
parents:
diff changeset
   298
void DownloadManagerClient::pauseAll()
hgs
parents:
diff changeset
   299
{
hgs
parents:
diff changeset
   300
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   301
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   302
        if (!initServer())
hgs
parents:
diff changeset
   303
            return;
hgs
parents:
diff changeset
   304
    }
hgs
parents:
diff changeset
   305
hgs
parents:
diff changeset
   306
    // create string to send
hgs
parents:
diff changeset
   307
    QString data;
hgs
parents:
diff changeset
   308
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   309
hgs
parents:
diff changeset
   310
    // send to sever
hgs
parents:
diff changeset
   311
    if (priv->m_session->sendSync(QString::number(PauseAll), data.toAscii()))
hgs
parents:
diff changeset
   312
        priv->m_session->readAll();
hgs
parents:
diff changeset
   313
    else
hgs
parents:
diff changeset
   314
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   315
}
hgs
parents:
diff changeset
   316
hgs
parents:
diff changeset
   317
void DownloadManagerClient::resumeAll()
hgs
parents:
diff changeset
   318
{
hgs
parents:
diff changeset
   319
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   320
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   321
        if (!initServer())
hgs
parents:
diff changeset
   322
            return;
hgs
parents:
diff changeset
   323
    }
hgs
parents:
diff changeset
   324
hgs
parents:
diff changeset
   325
    // create string to send
hgs
parents:
diff changeset
   326
    QString data;
hgs
parents:
diff changeset
   327
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   328
hgs
parents:
diff changeset
   329
    // send to sever
hgs
parents:
diff changeset
   330
    if (priv->m_session->sendSync(QString::number(ResumeAll), data.toAscii()))
hgs
parents:
diff changeset
   331
        priv->m_session->readAll();
hgs
parents:
diff changeset
   332
    else
hgs
parents:
diff changeset
   333
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   334
}
hgs
parents:
diff changeset
   335
hgs
parents:
diff changeset
   336
void DownloadManagerClient::removeAll()
hgs
parents:
diff changeset
   337
{
hgs
parents:
diff changeset
   338
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   339
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   340
        if (!initServer())
hgs
parents:
diff changeset
   341
            return;
hgs
parents:
diff changeset
   342
    }
hgs
parents:
diff changeset
   343
hgs
parents:
diff changeset
   344
    // create string to send
hgs
parents:
diff changeset
   345
    QString data;
hgs
parents:
diff changeset
   346
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   347
hgs
parents:
diff changeset
   348
    // send to sever
hgs
parents:
diff changeset
   349
    if (priv->m_session->sendSync(QString::number(RemoveAll), data.toAscii()))
hgs
parents:
diff changeset
   350
        priv->m_session->readAll();
hgs
parents:
diff changeset
   351
    else
hgs
parents:
diff changeset
   352
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   353
}
hgs
parents:
diff changeset
   354
hgs
parents:
diff changeset
   355
QVariant DownloadManagerClient::getDownloadManagerAttribute(DownloadManagerAttribute attr)
hgs
parents:
diff changeset
   356
{
hgs
parents:
diff changeset
   357
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   358
    QVariant returnValue;
hgs
parents:
diff changeset
   359
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   360
        if (!initServer())
hgs
parents:
diff changeset
   361
            return returnValue;
hgs
parents:
diff changeset
   362
    }
hgs
parents:
diff changeset
   363
hgs
parents:
diff changeset
   364
    // create string to send
hgs
parents:
diff changeset
   365
    QString data;
hgs
parents:
diff changeset
   366
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   367
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   368
    data.append(QString::number(attr));
hgs
parents:
diff changeset
   369
hgs
parents:
diff changeset
   370
    // send to sever
hgs
parents:
diff changeset
   371
    if (priv->m_session->sendSync(QString::number(GetDownloadManagerAttribute), data.toAscii())) {
hgs
parents:
diff changeset
   372
        // expected response is
hgs
parents:
diff changeset
   373
        // list[0] -> attribute
hgs
parents:
diff changeset
   374
        // list[1] -> value
hgs
parents:
diff changeset
   375
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   376
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   377
        if (list.count() == 2) {
hgs
parents:
diff changeset
   378
            if (list[0] == QString::number(attr))
hgs
parents:
diff changeset
   379
                returnValue = QVariant(list[1]);
hgs
parents:
diff changeset
   380
        }
hgs
parents:
diff changeset
   381
    }
hgs
parents:
diff changeset
   382
    else {
hgs
parents:
diff changeset
   383
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   384
    }
hgs
parents:
diff changeset
   385
    return returnValue;
hgs
parents:
diff changeset
   386
}
hgs
parents:
diff changeset
   387
hgs
parents:
diff changeset
   388
int DownloadManagerClient::setDownloadManagerAttribute(DownloadManagerAttribute attr, const QVariant& value)
hgs
parents:
diff changeset
   389
{
hgs
parents:
diff changeset
   390
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   391
    int returnValue(-1);
hgs
parents:
diff changeset
   392
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   393
        if (!initServer())
hgs
parents:
diff changeset
   394
            return returnValue;
hgs
parents:
diff changeset
   395
    }
hgs
parents:
diff changeset
   396
hgs
parents:
diff changeset
   397
    // create string to send
hgs
parents:
diff changeset
   398
    QString data;
hgs
parents:
diff changeset
   399
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   400
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   401
    data.append(QString::number(attr));
hgs
parents:
diff changeset
   402
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   403
    data.append(encodeString(value.toString()));
hgs
parents:
diff changeset
   404
hgs
parents:
diff changeset
   405
    // send to sever
hgs
parents:
diff changeset
   406
    if (priv->m_session->sendSync(QString::number(SetDownloadManagerAttribute), data.toAscii())) {
hgs
parents:
diff changeset
   407
        // expected response is
hgs
parents:
diff changeset
   408
        // list[0] -> attribute
hgs
parents:
diff changeset
   409
        // list[1] -> returnValue
hgs
parents:
diff changeset
   410
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   411
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   412
        if (list.count() == 2) {
hgs
parents:
diff changeset
   413
            if (list[0] == QString::number(attr))
hgs
parents:
diff changeset
   414
                returnValue = list[1].toInt();
hgs
parents:
diff changeset
   415
        }
hgs
parents:
diff changeset
   416
    }
hgs
parents:
diff changeset
   417
    else {
hgs
parents:
diff changeset
   418
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   419
    }
hgs
parents:
diff changeset
   420
    return returnValue;
hgs
parents:
diff changeset
   421
}
hgs
parents:
diff changeset
   422
hgs
parents:
diff changeset
   423
int DownloadManagerClient::startDownload(int dlId)
hgs
parents:
diff changeset
   424
{
hgs
parents:
diff changeset
   425
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   426
    int returnValue(-1);
hgs
parents:
diff changeset
   427
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   428
        if (!initServer())
hgs
parents:
diff changeset
   429
            return returnValue;
hgs
parents:
diff changeset
   430
    }
hgs
parents:
diff changeset
   431
hgs
parents:
diff changeset
   432
    // create string to send
hgs
parents:
diff changeset
   433
    QString data;
hgs
parents:
diff changeset
   434
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   435
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   436
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   437
hgs
parents:
diff changeset
   438
    // send to sever
hgs
parents:
diff changeset
   439
    if (priv->m_session->sendSync(QString::number(StartDownload), data.toAscii())) {
hgs
parents:
diff changeset
   440
        // expected response is
hgs
parents:
diff changeset
   441
        // list[0] -> downloadId
hgs
parents:
diff changeset
   442
        // list[1] -> returnValue
hgs
parents:
diff changeset
   443
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   444
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   445
        if (list.count() == 2) {
hgs
parents:
diff changeset
   446
            if (list[0] == QString::number(dlId))
hgs
parents:
diff changeset
   447
                returnValue = list[1].toInt();
hgs
parents:
diff changeset
   448
        }
hgs
parents:
diff changeset
   449
    }
hgs
parents:
diff changeset
   450
    else {
hgs
parents:
diff changeset
   451
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   452
    }
hgs
parents:
diff changeset
   453
    return returnValue;
hgs
parents:
diff changeset
   454
}
hgs
parents:
diff changeset
   455
hgs
parents:
diff changeset
   456
int DownloadManagerClient::pauseDownload(int dlId)
hgs
parents:
diff changeset
   457
{
hgs
parents:
diff changeset
   458
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   459
    int returnValue(-1);
hgs
parents:
diff changeset
   460
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   461
        if (!initServer())
hgs
parents:
diff changeset
   462
            return returnValue;
hgs
parents:
diff changeset
   463
    }
hgs
parents:
diff changeset
   464
hgs
parents:
diff changeset
   465
    // create string to send
hgs
parents:
diff changeset
   466
    QString data;
hgs
parents:
diff changeset
   467
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   468
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   469
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   470
hgs
parents:
diff changeset
   471
    // send to sever
hgs
parents:
diff changeset
   472
    if (priv->m_session->sendSync(QString::number(PauseDownload), data.toAscii())) {
hgs
parents:
diff changeset
   473
        // expected response is
hgs
parents:
diff changeset
   474
        // list[0] -> downloadId
hgs
parents:
diff changeset
   475
        // list[1] -> returnValue
hgs
parents:
diff changeset
   476
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   477
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   478
        if (list.count() == 2) {
hgs
parents:
diff changeset
   479
            if (list[0] == QString::number(dlId))
hgs
parents:
diff changeset
   480
                returnValue = list[1].toInt();
hgs
parents:
diff changeset
   481
        }
hgs
parents:
diff changeset
   482
    }
hgs
parents:
diff changeset
   483
    else {
hgs
parents:
diff changeset
   484
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   485
    }
hgs
parents:
diff changeset
   486
    return returnValue;
hgs
parents:
diff changeset
   487
}
hgs
parents:
diff changeset
   488
hgs
parents:
diff changeset
   489
int DownloadManagerClient::resumeDownload(int dlId)
hgs
parents:
diff changeset
   490
{
hgs
parents:
diff changeset
   491
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   492
    int returnValue(-1);
hgs
parents:
diff changeset
   493
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   494
        if (!initServer())
hgs
parents:
diff changeset
   495
            return returnValue;
hgs
parents:
diff changeset
   496
    }
hgs
parents:
diff changeset
   497
hgs
parents:
diff changeset
   498
    // create string to send
hgs
parents:
diff changeset
   499
    QString data;
hgs
parents:
diff changeset
   500
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   501
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   502
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   503
hgs
parents:
diff changeset
   504
    // send to sever
hgs
parents:
diff changeset
   505
    if (priv->m_session->sendSync(QString::number(ResumeDownload), data.toAscii())) {
hgs
parents:
diff changeset
   506
        // expected response is
hgs
parents:
diff changeset
   507
        // list[0] -> downloadId
hgs
parents:
diff changeset
   508
        // list[1] -> returnValue
hgs
parents:
diff changeset
   509
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   510
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   511
        if (list.count() == 2) {
hgs
parents:
diff changeset
   512
            if (list[0] == QString::number(dlId))
hgs
parents:
diff changeset
   513
                returnValue = list[1].toInt();
hgs
parents:
diff changeset
   514
        }
hgs
parents:
diff changeset
   515
    }
hgs
parents:
diff changeset
   516
    else {
hgs
parents:
diff changeset
   517
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   518
    }
hgs
parents:
diff changeset
   519
    return returnValue;
hgs
parents:
diff changeset
   520
}
hgs
parents:
diff changeset
   521
hgs
parents:
diff changeset
   522
int DownloadManagerClient::cancelDownload(int dlId)
hgs
parents:
diff changeset
   523
{
hgs
parents:
diff changeset
   524
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   525
    int returnValue(-1);
hgs
parents:
diff changeset
   526
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   527
        if (!initServer())
hgs
parents:
diff changeset
   528
            return returnValue;
hgs
parents:
diff changeset
   529
    }
hgs
parents:
diff changeset
   530
hgs
parents:
diff changeset
   531
    // create string to send
hgs
parents:
diff changeset
   532
    QString data;
hgs
parents:
diff changeset
   533
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   534
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   535
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   536
hgs
parents:
diff changeset
   537
    // send to sever
hgs
parents:
diff changeset
   538
    if (priv->m_session->sendSync(QString::number(CancelDownload), data.toAscii())) {
hgs
parents:
diff changeset
   539
        // expected response is
hgs
parents:
diff changeset
   540
        // list[0] -> downloadId
hgs
parents:
diff changeset
   541
        // list[1] -> returnValue
hgs
parents:
diff changeset
   542
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   543
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   544
        if (list.count() == 2) {
hgs
parents:
diff changeset
   545
            if (list[0] == QString::number(dlId))
hgs
parents:
diff changeset
   546
                returnValue = list[1].toInt();
hgs
parents:
diff changeset
   547
        }
hgs
parents:
diff changeset
   548
    }
hgs
parents:
diff changeset
   549
    else {
hgs
parents:
diff changeset
   550
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   551
    }
hgs
parents:
diff changeset
   552
    return returnValue;
hgs
parents:
diff changeset
   553
}
hgs
parents:
diff changeset
   554
hgs
parents:
diff changeset
   555
QVariant DownloadManagerClient::getDownloadAttribute(int dlId, DownloadAttribute attr)
hgs
parents:
diff changeset
   556
{
hgs
parents:
diff changeset
   557
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   558
    QVariant returnValue;
hgs
parents:
diff changeset
   559
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   560
        if (!initServer())
hgs
parents:
diff changeset
   561
            return returnValue;
hgs
parents:
diff changeset
   562
    }
hgs
parents:
diff changeset
   563
hgs
parents:
diff changeset
   564
    // create string to send
hgs
parents:
diff changeset
   565
    QString data;
hgs
parents:
diff changeset
   566
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   567
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   568
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   569
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   570
    data.append(QString::number(attr));
hgs
parents:
diff changeset
   571
hgs
parents:
diff changeset
   572
    // send to sever
hgs
parents:
diff changeset
   573
    if (priv->m_session->sendSync(QString::number(GetDownloadAttribute), data.toAscii())) {
hgs
parents:
diff changeset
   574
        // expected response is
hgs
parents:
diff changeset
   575
        // list[0] -> downloadId
hgs
parents:
diff changeset
   576
        // list[1] -> attribute
hgs
parents:
diff changeset
   577
        // list[2] -> value
hgs
parents:
diff changeset
   578
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   579
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   580
        if (list.count() == 3) {
hgs
parents:
diff changeset
   581
            if ((list[0] == QString::number(dlId)) &&
hgs
parents:
diff changeset
   582
                (list[1] == QString::number(attr)))
hgs
parents:
diff changeset
   583
                returnValue = QVariant(list[2]);
hgs
parents:
diff changeset
   584
        }
hgs
parents:
diff changeset
   585
    }
hgs
parents:
diff changeset
   586
    else {
hgs
parents:
diff changeset
   587
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   588
    }
hgs
parents:
diff changeset
   589
    return returnValue;
hgs
parents:
diff changeset
   590
}
hgs
parents:
diff changeset
   591
hgs
parents:
diff changeset
   592
int DownloadManagerClient::setDownloadAttribute(int dlId, DownloadAttribute attr, const QVariant& value)
hgs
parents:
diff changeset
   593
{
hgs
parents:
diff changeset
   594
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   595
    int returnValue(-1);
hgs
parents:
diff changeset
   596
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   597
        if (!initServer())
hgs
parents:
diff changeset
   598
            return returnValue;
hgs
parents:
diff changeset
   599
    }
hgs
parents:
diff changeset
   600
hgs
parents:
diff changeset
   601
    // create string to send
hgs
parents:
diff changeset
   602
    QString data;
hgs
parents:
diff changeset
   603
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   604
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   605
    data.append(QString::number(dlId));
hgs
parents:
diff changeset
   606
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   607
    data.append(QString::number(attr));
hgs
parents:
diff changeset
   608
    data.append(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   609
    data.append(encodeString(value.toString()));
hgs
parents:
diff changeset
   610
hgs
parents:
diff changeset
   611
    // send to sever
hgs
parents:
diff changeset
   612
    if (priv->m_session->sendSync(QString::number(SetDownloadAttribute), data.toAscii())) {
hgs
parents:
diff changeset
   613
        // expected response is
hgs
parents:
diff changeset
   614
        // list[0] -> downloadId
hgs
parents:
diff changeset
   615
        // list[1] -> attribute
hgs
parents:
diff changeset
   616
        // list[2] -> returnValue
hgs
parents:
diff changeset
   617
        QByteArray bytes = priv->m_session->readAll();
hgs
parents:
diff changeset
   618
        QStringList list = QString(bytes).split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   619
        if (list.count() == 3) {
hgs
parents:
diff changeset
   620
            if ((list[0] == QString::number(dlId)) &&
hgs
parents:
diff changeset
   621
                (list[1] == QString::number(attr)))
hgs
parents:
diff changeset
   622
                returnValue = list[2].toInt();
hgs
parents:
diff changeset
   623
        }
hgs
parents:
diff changeset
   624
    }
hgs
parents:
diff changeset
   625
    else
hgs
parents:
diff changeset
   626
    {
hgs
parents:
diff changeset
   627
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   628
    }
hgs
parents:
diff changeset
   629
    return returnValue;
hgs
parents:
diff changeset
   630
}
hgs
parents:
diff changeset
   631
hgs
parents:
diff changeset
   632
// poll server for events
hgs
parents:
diff changeset
   633
void DownloadManagerClient::getEvents()
hgs
parents:
diff changeset
   634
{
hgs
parents:
diff changeset
   635
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   636
    if (!priv->m_isConnected) {
hgs
parents:
diff changeset
   637
        if (!initServer())
hgs
parents:
diff changeset
   638
            return;
hgs
parents:
diff changeset
   639
    }
hgs
parents:
diff changeset
   640
hgs
parents:
diff changeset
   641
    // create string to send
hgs
parents:
diff changeset
   642
    QString data;
hgs
parents:
diff changeset
   643
    data.append(encodeString(priv->m_clientName));
hgs
parents:
diff changeset
   644
hgs
parents:
diff changeset
   645
    // send to sever
hgs
parents:
diff changeset
   646
    if (priv->m_session->sendSync(QString::number(GetEvents), data.toAscii())) {
hgs
parents:
diff changeset
   647
        // expected response has a list of downloadmanager and download events
hgs
parents:
diff changeset
   648
        QString eventMsg = priv->m_session->readAll();
hgs
parents:
diff changeset
   649
        if (!eventMsg.isEmpty())
hgs
parents:
diff changeset
   650
            processEvents(eventMsg);
hgs
parents:
diff changeset
   651
hgs
parents:
diff changeset
   652
        // start timer for getting next set of events
hgs
parents:
diff changeset
   653
        priv->m_timer->start(EVENTS_REQUEST_INTERVAL);
hgs
parents:
diff changeset
   654
    }
hgs
parents:
diff changeset
   655
    else {
hgs
parents:
diff changeset
   656
        setServerError(WRT::ServiceFwIPC::EIPCError);
hgs
parents:
diff changeset
   657
    }
hgs
parents:
diff changeset
   658
}
hgs
parents:
diff changeset
   659
hgs
parents:
diff changeset
   660
// process Download and DownloadManager events
hgs
parents:
diff changeset
   661
void DownloadManagerClient::processEvents(QString eventMsg)
hgs
parents:
diff changeset
   662
{
hgs
parents:
diff changeset
   663
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   664
hgs
parents:
diff changeset
   665
    // Separate out the fields of an event
hgs
parents:
diff changeset
   666
    QStringList list = eventMsg.split(DM_FIELD_DELIMITER);
hgs
parents:
diff changeset
   667
    if (list.count() >= 2) {
hgs
parents:
diff changeset
   668
        QString eventName = list[0];
hgs
parents:
diff changeset
   669
        // // check type of event
hgs
parents:
diff changeset
   670
        if (list[0] == QString::number(EventDownloadManager)) {
hgs
parents:
diff changeset
   671
            // Download Manager event
hgs
parents:
diff changeset
   672
            DEventType type = (DEventType)list[1].toInt();
hgs
parents:
diff changeset
   673
            // post event
hgs
parents:
diff changeset
   674
            priv->m_downloadManager->postEvent(type, NULL);
hgs
parents:
diff changeset
   675
        }
hgs
parents:
diff changeset
   676
        else if (list[0] == QString::number(EventDownload)) {
hgs
parents:
diff changeset
   677
            // Download event
hgs
parents:
diff changeset
   678
            int dlId = list[1].toInt();
hgs
parents:
diff changeset
   679
            DEventType type = (DEventType)list[2].toInt();
hgs
parents:
diff changeset
   680
            BackgroundDownload* dl = dynamic_cast<BackgroundDownload*>(priv->m_downloadManager->findDownload(dlId));
hgs
parents:
diff changeset
   681
            // post event
hgs
parents:
diff changeset
   682
            if (dl)
hgs
parents:
diff changeset
   683
                dl->postEvent(type, NULL);
hgs
parents:
diff changeset
   684
        }
hgs
parents:
diff changeset
   685
    }
hgs
parents:
diff changeset
   686
}
hgs
parents:
diff changeset
   687
hgs
parents:
diff changeset
   688
// encode string so that it does not contain any communication delimiter
hgs
parents:
diff changeset
   689
QString DownloadManagerClient::encodeString(const QString& inputString)
hgs
parents:
diff changeset
   690
{
hgs
parents:
diff changeset
   691
    QByteArray bytes = QUrl::toPercentEncoding(inputString);
hgs
parents:
diff changeset
   692
    return bytes.data();
hgs
parents:
diff changeset
   693
}
hgs
parents:
diff changeset
   694
hgs
parents:
diff changeset
   695
// get server connection/communication error
hgs
parents:
diff changeset
   696
int DownloadManagerClient::serverError()
hgs
parents:
diff changeset
   697
{
hgs
parents:
diff changeset
   698
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   699
    return priv->m_error;
hgs
parents:
diff changeset
   700
}
hgs
parents:
diff changeset
   701
hgs
parents:
diff changeset
   702
// set server IPC error
hgs
parents:
diff changeset
   703
void DownloadManagerClient::setServerError(int error)
hgs
parents:
diff changeset
   704
{
hgs
parents:
diff changeset
   705
    DM_PRIVATE(DownloadManagerClient);
hgs
parents:
diff changeset
   706
    priv->m_error = error;
hgs
parents:
diff changeset
   707
    // client could have died
hgs
parents:
diff changeset
   708
    // mark client as disconnected so that it can reconnect again
hgs
parents:
diff changeset
   709
    priv->m_isConnected = false;
hgs
parents:
diff changeset
   710
    if (priv->m_timer->isActive())
hgs
parents:
diff changeset
   711
        priv->m_timer->stop();
hgs
parents:
diff changeset
   712
    priv->m_downloadManager->postEvent(DisconnectedFromServer, NULL);
hgs
parents:
diff changeset
   713
    priv->m_downloadManager->postEvent(ServerError, NULL);
hgs
parents:
diff changeset
   714
}