~mateo-salta/nitroshare/nitroshare

122 by Nathan Osman
Added dependency on XML-RPC library and implemented code to make sure that only one instance of the application is running at a time.
1
/* NitroShare - A simple network file sharing tool.
2
   Copyright (C) 2012 Nathan Osman
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 as published by
6
   the Free Software Foundation, either version 3 of the License, or
7
   (at your option) any later version.
8
9
   This program is distributed in the hope that it will be useful,
10
   but WITHOUT ANY WARRANTY; without even the implied warranty of
11
   MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.  See the
12
   GNU General Public License for more details.
13
14
   You should have received a copy of the GNU General Public License
15
   along with this program.  If not, see <http://www.gnu.org/licenses/>. */
16
17
#include <QDebug>
18
19
#include <rpc/CRPCServer.h>
20
#include <util/settings.h>
21
22
CRPCServer::CRPCServer()
23
{
124 by Nathan Osman
Implemented single RPC method and added Nautilus extension.
24
    /* Register the methods we allow. Notice that we use List when
25
       we expect a list of strings and not StringList. */
26
    registerMethod("SendFiles", QVariant::Bool, QVariant::List);
27
123 by Nathan Osman
Replaced accidental removal of translation initialization code and added skeleton for XML RPC methods.
28
    connect(this, SIGNAL(incomingRequest(int,QString,QList<xmlrpc::Variant>)),
29
                  SLOT(OnRequest(int,QString,QList<xmlrpc::Variant>)));
122 by Nathan Osman
Added dependency on XML-RPC library and implemented code to make sure that only one instance of the application is running at a time.
30
}
31
32
bool CRPCServer::Init()
33
{
34
    quint16 port = Settings::Get("RPC/Port").toUInt();
35
    if(!listen(port))
36
    {
37
        qDebug() << "Unable to bind XML-RPC server to port" << port;
38
        return false;
39
    }
40
41
    return true;
42
}
123 by Nathan Osman
Replaced accidental removal of translation initialization code and added skeleton for XML RPC methods.
43
44
void CRPCServer::OnRequest(int request_id, QString method_name, QList<xmlrpc::Variant> parameters)
45
{
124 by Nathan Osman
Implemented single RPC method and added Nautilus extension.
46
    qDebug() << "RPC call to" << method_name;
47
48
    if(method_name == "SendFiles")
49
    {
50
        emit SendFiles(parameters.at(0).toStringList(), "");
51
        sendReturnValue(request_id, true);
52
    }
123 by Nathan Osman
Replaced accidental removal of translation initialization code and added skeleton for XML RPC methods.
53
}