cutelyst
4.8.0
A C++ Web Framework built on top of Qt, using the simple approach of Catalyst (Perl) framework.
protocolfastcgi.h
1
/*
2
* SPDX-FileCopyrightText: (C) 2017-2018 Daniel Nicoletti <dantti12@gmail.com>
3
* SPDX-License-Identifier: BSD-3-Clause
4
*/
5
#ifndef PROTOCOLFASTCGI_H
6
#define PROTOCOLFASTCGI_H
7
8
#include "protocol.h"
9
#include "socket.h"
10
11
#include <Cutelyst/Context>
12
13
#include <QObject>
14
15
namespace
Cutelyst
{
16
17
class
Server
;
18
class
ProtoRequestFastCGI final
19
:
public
ProtocolData
20
,
public
Cutelyst::EngineRequest
21
{
22
Q_GADGET
23
public
:
24
ProtoRequestFastCGI(
Socket
*sock,
int
bufferSize);
25
~ProtoRequestFastCGI()
override
;
26
27
void
setupNewConnection(
Socket
*sock)
override
;
28
29
bool
writeHeaders
(quint16
status
,
const
Cutelyst::Headers
&
headers
)
override
final
;
30
31
qint64
doWrite
(
const
char
*data, qint64 len)
override
final
;
32
33
inline
qint64
doWrite
(
const
QByteArray &data) {
return
doWrite
(data.constData(), data.size()); }
34
35
void
processingFinished
()
override
final
;
36
37
inline
void
resetData()
override
final
38
{
39
ProtocolData::resetData();
40
41
// EngineRequest
42
// If we deleteLater the context, there might
43
// be an event that tries to finalize the request
44
// and it will encounter a null context pointer
45
delete
context
;
46
context
=
nullptr
;
47
body
=
nullptr
;
48
49
startOfRequest
= TimePointSteady{};
50
status
= InitialState;
51
52
stream_id = 0;
53
pktsize = 0;
54
}
55
56
public
:
57
quint16 stream_id = 0;
58
quint16 pktsize = 0;
59
};
60
61
class
ProtocolFastCGI final :
public
Protocol
62
{
63
public
:
64
ProtocolFastCGI(
Server
*wsgi);
65
~ProtocolFastCGI()
override
;
66
67
Type type()
const override
;
68
69
inline
qint64 readBody(
Socket
*socket, QIODevice *io, qint64 bytesAvailable)
const
;
70
void
parse(
Socket
*sock, QIODevice *io)
const
override
final
;
71
72
ProtocolData
*createData(
Socket
*sock)
const
override
final
;
73
74
private
:
75
inline
quint16 addHeader(
ProtoRequestFastCGI
*request,
76
const
char
*key,
77
quint16 keylen,
78
const
char
*val,
79
quint16 vallen)
const
;
80
inline
int
parseHeaders(
ProtoRequestFastCGI
*request,
const
char
*buf, quint16 len)
const
;
81
inline
int
processPacket(
ProtoRequestFastCGI
*request)
const
;
82
inline
bool
writeBody(
ProtoRequestFastCGI
*request,
char
*buf, qint64 len)
const
;
83
};
84
85
}
// namespace Cutelyst
86
87
#endif
// PROTOCOLFASTCGI_H
Cutelyst::EngineRequest
Definition
enginerequest.h:28
Cutelyst::EngineRequest::context
Context * context
Definition
enginerequest.h:173
Cutelyst::EngineRequest::status
Status status
Definition
enginerequest.h:182
Cutelyst::EngineRequest::startOfRequest
TimePointSteady startOfRequest
Definition
enginerequest.h:176
Cutelyst::EngineRequest::headers
Headers headers
Definition
enginerequest.h:165
Cutelyst::EngineRequest::body
QIODevice * body
Definition
enginerequest.h:169
Cutelyst::Headers
Container for HTTP headers.
Definition
headers.h:24
Cutelyst::ProtoRequestFastCGI
Definition
protocolfastcgi.h:21
Cutelyst::ProtoRequestFastCGI::writeHeaders
bool writeHeaders(quint16 status, const Cutelyst::Headers &headers) override final
Definition
protocolfastcgi.cpp:450
Cutelyst::ProtoRequestFastCGI::doWrite
qint64 doWrite(const char *data, qint64 len) override final
Definition
protocolfastcgi.cpp:486
Cutelyst::ProtoRequestFastCGI::processingFinished
void processingFinished() override final
Definition
protocolfastcgi.cpp:550
Cutelyst::ProtocolData
Definition
protocol.h:19
Cutelyst::Server
Implements a web server.
Definition
server.h:60
Cutelyst::Socket
Definition
socket.h:25
Cutelyst
The Cutelyst namespace holds all public Cutelyst API.
Definition
group-core-actions.dox:1
Cutelyst
Server
protocolfastcgi.h
Generated by
1.14.0