mirror of
https://github.com/hyperion-project/hyperion.ng.git
synced 2023-10-10 13:36:59 +02:00
8a9d2760ef
* implement config save over http post instead of json * remove json set config finish config write thrugh http post * remove debug code and add failure messages
74 lines
2.1 KiB
C++
74 lines
2.1 KiB
C++
|
|
#include "QtHttpServer.h"
|
|
#include "QtHttpRequest.h"
|
|
#include "QtHttpReply.h"
|
|
#include "QtHttpClientWrapper.h"
|
|
|
|
#include <QTcpServer>
|
|
#include <QTcpSocket>
|
|
#include <QHostAddress>
|
|
|
|
const QString & QtHttpServer::HTTP_VERSION = QStringLiteral ("HTTP/1.1");
|
|
|
|
QtHttpServer::QtHttpServer (QObject * parent)
|
|
: QObject (parent)
|
|
, m_serverName (QStringLiteral ("The Qt5 HTTP Server"))
|
|
{
|
|
m_sockServer = new QTcpServer (this);
|
|
connect (m_sockServer, &QTcpServer::newConnection, this, &QtHttpServer::onClientConnected);
|
|
}
|
|
|
|
const QString & QtHttpServer::getServerName (void) const {
|
|
return m_serverName;
|
|
}
|
|
|
|
quint16 QtHttpServer::getServerPort (void) const {
|
|
return m_sockServer->serverPort ();
|
|
}
|
|
|
|
QString QtHttpServer::getErrorString (void) const {
|
|
return m_sockServer->errorString ();
|
|
}
|
|
|
|
void QtHttpServer::start (quint16 port) {
|
|
if (m_sockServer->listen (QHostAddress::Any, port)) {
|
|
emit started (m_sockServer->serverPort ());
|
|
}
|
|
else {
|
|
emit error (m_sockServer->errorString ());
|
|
}
|
|
}
|
|
|
|
void QtHttpServer::stop (void) {
|
|
if (m_sockServer->isListening ()) {
|
|
m_sockServer->close ();
|
|
emit stopped ();
|
|
}
|
|
}
|
|
|
|
void QtHttpServer::setServerName (const QString & serverName) {
|
|
m_serverName = serverName;
|
|
}
|
|
|
|
void QtHttpServer::onClientConnected (void) {
|
|
while (m_sockServer->hasPendingConnections ()) {
|
|
QTcpSocket * sockClient = m_sockServer->nextPendingConnection ();
|
|
QtHttpClientWrapper * wrapper = new QtHttpClientWrapper (sockClient, this);
|
|
connect (sockClient, &QTcpSocket::disconnected, this, &QtHttpServer::onClientDisconnected);
|
|
m_socksClientsHash.insert (sockClient, wrapper);
|
|
emit clientConnected (wrapper->getGuid ());
|
|
}
|
|
}
|
|
|
|
void QtHttpServer::onClientDisconnected (void) {
|
|
QTcpSocket * sockClient = qobject_cast<QTcpSocket *> (sender ());
|
|
if (sockClient) {
|
|
QtHttpClientWrapper * wrapper = m_socksClientsHash.value (sockClient, Q_NULLPTR);
|
|
if (wrapper) {
|
|
emit clientDisconnected (wrapper->getGuid ());
|
|
wrapper->deleteLater ();
|
|
m_socksClientsHash.remove (sockClient);
|
|
}
|
|
}
|
|
}
|