defuze.me
Client
|
00001 /************************************************************************** 00002 ** defuze.me Epitech Innovative Project 00003 ** 00004 ** Copyright 2010 00005 ** Athena Calmettes - Jocelyn De La Rosa - Francois Gaillard 00006 ** Adrien Jarthon - Alexandre Moore - Luc Peres - Arnaud Sellier 00007 ** 00008 ** All rights reserved. 00009 **************************************************************************/ 00010 00011 namespace Network { 00012 class NetworkCore; 00013 } 00014 00015 #ifndef NETWORKCORE_HPP 00016 #define NETWORKCORE_HPP 00017 00018 #include <QString> 00019 #include <QVariant> 00020 #include <QNetworkAccessManager> 00021 #include <QNetworkInterface> 00022 #include <QNetworkRequest> 00023 #include <QNetworkReply> 00024 #include <QTcpServer> 00025 #include <QUdpSocket> 00026 #include <QUrl> 00027 #include "core.hpp" 00028 #include "authenticator.hpp" 00029 #include "parser.hpp" 00030 #include "doorman.hpp" 00031 00032 namespace Network 00033 { 00037 class NetworkCore : public QObject, public Core 00038 { 00039 Q_OBJECT 00040 public: 00041 NetworkCore(QStringList &arguments); 00042 ~NetworkCore(); 00043 void init(Cores* cores); 00044 void aboutToQuit(); 00045 const QString name(); 00046 00047 void initRCServer(unsigned short port); 00048 QNetworkAccessManager& web(); 00049 QTcpServer& remoteControl(); 00050 QUdpSocket& autoDiscovery(); 00051 QNetworkRequest apiRequest(const QString& url) const; 00052 const Parser& apiParser() const; 00053 QVariantList discoveryAddresses() const; 00054 QVariantMap getRadioInfo() const; 00055 00056 signals: 00057 void newRemoteClient(RemoteSock*); 00058 void APIAuthenticated(); 00059 00060 public slots: 00061 void invalidateWebToken(); 00062 00063 private slots: 00064 void giveCredentials(const QString&); 00065 void giveAuthorization(const RemoteEvent&); 00066 void discoveryRequest(); 00067 00068 private: 00069 QNetworkAccessManager *webManager; 00070 QTcpServer *rcServer; 00071 QUdpSocket *adServer; 00072 Authenticator *authenticator; 00073 Doorman *doorman; 00074 JsonParser defaultApiParser; 00075 }; 00076 } 00077 00078 #endif // NETWORKCORE_HPP