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/client/SocketContext.h"
44#include "core/EventReceiver.h"
45#include "core/socket/stream/SocketConnection.h"
46#include "web/http/CookieOptions.h"
48#ifndef DOXYGEN_SHOULD_SKIP_THIS
50#include "log/Logger.h"
59namespace web::http::client {
62 const std::function<
void(
const std::shared_ptr<Request>&)>& onRequestBegin,
63 const std::function<
void(
const std::shared_ptr<Request>&)>& onRequestEnd,
64 bool pipelinedRequests)
65 : Super
(socketConnection
)
75 [
this](web::http::client::
Response&& response) {
81 [
this](
int status,
const std::string& reason) {
104 const std::string requestLine = std::string(request
.method)
151 if (!masterRequest.expired()) {
169 const std::string requestLine = std::string(request
.method)
184 if (!masterRequest.expired()) {
224 const std::shared_ptr<Request> request = std::make_shared<Request>(std::move(
deliveredRequests.front()));
227 const std::string requestLine = std::string(request->
method)
229 .append(request->
url)
231 .append(std::to_string(request->
httpMajor))
233 .append(std::to_string(request->
httpMinor));
237 const bool httpClose =
250 const std::shared_ptr<Request> request = std::make_shared<Request>(std::move(
deliveredRequests.front()));
254 << std::string(request->
method)
256 .append(request->
url)
258 .append(std::to_string(request->
httpMajor))
260 .append(std::to_string(request->
httpMinor));
275 if (!masterRequest.expired()) {
300 std::size_t consumed = 0;
static void atNextTick(const std::function< void(void)> &callBack)
const std::string & getConfiguredServer() const
const std::string & getConnectionName() const
SocketConnection * getSocketConnection() const
SocketContext(core::socket::stream::SocketConnection *socketConnection)
void shutdownWrite(bool forceClose=false)
std::string header(const std::string &field)
void setMasterRequest(const std::shared_ptr< Request > &masterRequest)
void deliverResponse(const std::shared_ptr< Request > &request, const std::shared_ptr< Response > &response)
void deliverResponseParseError(const std::shared_ptr< Request > &request, const std::string &message)
ResponseParser(core::socket::stream::SocketContext *socketContext, const std::function< void()> &onResponseStart, const std::function< void(Response &&)> &onResponseParsed, const std::function< void(int, const std::string &)> &onResponseParseError)
Response && getResponse()
ConnectionState connectionState
SocketContext(core::socket::stream::SocketConnection *socketConnection, const std::function< void(const std::shared_ptr< Request > &)> &onRequestBegin, const std::function< void(const std::shared_ptr< Request > &)> &onRequestEnd, bool pipelinedRequests)
void requestPrepared(Request &&request)
std::list< Request > deliveredRequests
void requestDelivered(Request &&request, bool success)
void deliverResponseParseError(int status, const std::string &reason)
void onDisconnected() override
std::shared_ptr< Request > currentRequest
std::size_t onReceivedFromPeer() override
std::function< void(const std::shared_ptr< Request > &)> onRequestBegin
void deliverResponse(Response &&response)
void onWriteError(int errnum) override
bool onSignal(int signum) override
~SocketContext() override
void initiateRequest(Request &request)
std::function< void(const std::shared_ptr< Request > &)> onRequestEnd
void onConnected() override
void responseDelivered(bool httpClose)
std::list< Request > pendingRequests
std::shared_ptr< Request > masterRequest
bool ciContains(const std::string &str1, const std::string &str2)