2012-12-31 23:37:39 +01:00
|
|
|
#ifndef NETWORKREMOTE_H
|
|
|
|
#define NETWORKREMOTE_H
|
|
|
|
|
2013-01-14 17:18:24 +01:00
|
|
|
#include <boost/scoped_ptr.hpp>
|
|
|
|
|
2012-12-31 23:37:39 +01:00
|
|
|
#include <QTcpServer>
|
|
|
|
#include <QTcpSocket>
|
|
|
|
|
|
|
|
#include "core/player.h"
|
|
|
|
#include "core/application.h"
|
2013-01-03 21:40:47 +01:00
|
|
|
#include "incomingdataparser.h"
|
|
|
|
#include "outgoingdatacreator.h"
|
2013-01-10 21:21:55 +01:00
|
|
|
#include "remoteclient.h"
|
2013-01-09 20:07:28 +01:00
|
|
|
|
2013-01-14 17:23:06 +01:00
|
|
|
class NetworkRemote : public QObject {
|
2012-12-31 23:37:39 +01:00
|
|
|
Q_OBJECT
|
|
|
|
public:
|
|
|
|
static const char* kSettingsGroup;
|
2013-01-14 17:18:24 +01:00
|
|
|
static const quint16 kDefaultServerPort;
|
2013-01-10 21:21:55 +01:00
|
|
|
static const int kProtocolBufferVersion;
|
2012-12-31 23:37:39 +01:00
|
|
|
|
2013-01-14 17:18:24 +01:00
|
|
|
explicit NetworkRemote(Application* app, QObject* parent = 0);
|
2012-12-31 23:37:39 +01:00
|
|
|
~NetworkRemote();
|
|
|
|
|
|
|
|
public slots:
|
|
|
|
void SetupServer();
|
|
|
|
void StartServer();
|
|
|
|
void ReloadSettings();
|
|
|
|
void AcceptConnection();
|
|
|
|
|
|
|
|
private:
|
2013-01-14 17:18:24 +01:00
|
|
|
boost::scoped_ptr<QTcpServer> server_;
|
|
|
|
boost::scoped_ptr<QTcpServer> server_ipv6_;
|
|
|
|
boost::scoped_ptr<IncomingDataParser> incoming_data_parser_;
|
|
|
|
boost::scoped_ptr<OutgoingDataCreator> outgoing_data_creator_;
|
|
|
|
|
|
|
|
quint16 port_;
|
2012-12-31 23:37:39 +01:00
|
|
|
bool use_remote_;
|
2013-01-10 21:21:55 +01:00
|
|
|
bool only_non_public_ip_;
|
2013-01-09 20:07:28 +01:00
|
|
|
bool signals_connected_;
|
2012-12-31 23:37:39 +01:00
|
|
|
Application* app_;
|
2013-01-09 20:07:28 +01:00
|
|
|
|
2013-01-10 21:21:55 +01:00
|
|
|
QList<RemoteClient*> clients_;
|
2012-12-31 23:37:39 +01:00
|
|
|
|
|
|
|
void StopServer();
|
|
|
|
void ReadSettings();
|
2013-01-10 21:21:55 +01:00
|
|
|
void CreateRemoteClient(QTcpSocket* client_socket);
|
2013-01-11 13:55:09 +01:00
|
|
|
bool IpIsPrivate(const QHostAddress& address);
|
2012-12-31 23:37:39 +01:00
|
|
|
};
|
|
|
|
|
|
|
|
#endif // NETWORKREMOTE_H
|