2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
42#include "web/http/server/SocketContext.h"
44#include "core/EventReceiver.h"
45#include "core/socket/stream/SocketConnection.h"
46#include "web/http/server/Response.h"
48#ifndef DOXYGEN_SHOULD_SKIP_THIS
50#include "log/Logger.h"
57namespace web::http::
server {
61 const std::function<
void(
const std::shared_ptr<Request>&,
const std::shared_ptr<Response>&)>& onRequestReady)
62 : Super
(socketConnection
)
74 pendingRequests.emplace_back(std::make_shared<Request>(std::move(request)));
80 [
this](
int status,
const std::string& reason) {
90 const std::shared_ptr<Request>& pendingRequest =
pendingRequests.front();
99 const std::string connection = pendingRequest->
get("Connection");
100 if (!connection.empty()) {
111 const std::shared_ptr<Request>& pendingRequest =
pendingRequests.front();
119 const std::shared_ptr<Request>& pendingRequest =
pendingRequests.front();
138 const std::shared_ptr<Request>& pendingRequest =
pendingRequests.front();
151 if (!response.expired()) {
166 std::size_t consumed = 0;
176 if (masterResponse !=
nullptr) {
static void atNextTick(const std::function< void(void)> &callBack)
const std::string & getConnectionName() const
SocketConnection * getSocketConnection() const
SocketContext(core::socket::stream::SocketConnection *socketConnection)
void shutdownWrite(bool forceClose=false)
RequestParser(core::socket::stream::SocketContext *socketContext, const std::function< void()> &onRequestStart, const std::function< void(Request &&)> &onRequestParsed, const std::function< void(int, const std::string &)> &onRequestParseError)
const std::string & get(const std::string &key, int i=0) const
Response & set(const std::string &field, const std::string &value, bool overwrite=true)
ConnectionState connectionState
bool onSignal(int signum) override
void onConnected() override
void onDisconnected() override
void responseCompleted(bool success)
std::shared_ptr< Response > masterResponse
std::size_t onReceivedFromPeer() override
void onWriteError(int errnum) override
SocketContext(core::socket::stream::SocketConnection *socketConnection, const std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> &onRequestReady)
std::function< void(const std::shared_ptr< Request > &, const std::shared_ptr< Response > &)> onRequestReady
std::list< std::shared_ptr< Request > > pendingRequests