Files
DbWebserver/webserverlib/httpclientconnection.h
2018-10-04 23:34:08 +02:00

51 lines
1.1 KiB
C++

#pragma once
#include "webserverlib_global.h"
#include <QObject>
#include <QIODevice>
#include <memory>
#include "httpresponse.h"
#include "httprequest.h"
class QTcpSocket;
class QFileDevice;
class WebListener;
class WEBSERVERLIB_EXPORT HttpClientConnection : public QObject
{
Q_OBJECT
static const int m_bufferSize;
public:
explicit HttpClientConnection(QTcpSocket &socket, WebListener &webListener);
void sendResponse(const HttpResponse &response);
void sendResponse(HttpResponse response, const QByteArray &byteArray);
void sendResponse(HttpResponse response, const QString &string);
void sendResponse(HttpResponse response, std::unique_ptr<QIODevice> &&device);
void sendResponse(HttpResponse response, std::unique_ptr<QFileDevice> &&device);
private Q_SLOTS:
void readyRead();
void bytesWritten();
private:
void clearRequest();
QTcpSocket &m_socket;
WebListener &m_webListener;
QByteArray m_buffer;
enum { RequestLine, Headers, RequestBody, WaitingForResponse, SendingResponse } m_state;
int m_bodyLength;
HttpRequest m_request;
std::unique_ptr<QIODevice> m_sendingDeivce;
};