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#ifndef WEB_HTTP_SERVER_SOCKETCONTEXTUPGRADEFACTORY_H
43#define WEB_HTTP_SERVER_SOCKETCONTEXTUPGRADEFACTORY_H
45#include "web/http/SocketContextUpgradeFactory.h"
47namespace web::http::
server {
52#ifndef DOXYGEN_SHOULD_SKIP_THIS
58namespace web::http::
server {
static FileReader * open(const std::string &path)
void pipe(Sink *sink, const std::function< void(int)> &callback)
void sendToPeer(const std::string &data) const
const std::string & getConnectionName() const
SocketConnection * getSocketConnection() const
virtual void switchSocketContext(SocketContext *newSocketContext)
void sendToPeer(const char *chunk, std::size_t chunkLen) const final
bool streamToPeer(core::pipe::Source *source) const
const std::map< std::string, std::string > & getOptions() const
CookieOptions(const std::string &value, const std::map< std::string, std::string > &options)
const std::string & getValue() const
static std::string contentType(const std::string &file)
core::socket::stream::SocketContext * create(core::socket::stream::SocketConnection *socketConnection) final
virtual std::string name()=0
static std::string reason(int status)
const std::string & get(const std::string &key, int i=0) const
void onSourceData(const char *chunk, std::size_t chunkLen) override
Response(SocketContext *socketContext)
SocketContext * getSocketContext() const
SocketContext * socketContext
void onSourceConnect(core::pipe::Source *source) override
web::http::CiStringMap< web::http::CookieOptions > cookies
Response & status(int statusCode)
void send(const std::string &chunk)
void send(const char *chunk, std::size_t chunkLen)
Response & setTrailer(const std::string &field, const std::string &value, bool overwrite=true)
Response & set(const std::map< std::string, std::string > &headers, bool overwrite=true)
web::http::CiStringMap< std::string > trailer
web::http::CiStringMap< std::string > headers
Response & set(const std::string &field, const std::string &value, bool overwrite=true)
TransferEncoding transferEncoding
void upgrade(const std::shared_ptr< Request > &request, const std::function< void(const std::string &)> &status)
Response & type(const std::string &type)
void onSourceError(int errnum) override
core::socket::stream::SocketContext * socketContextUpgrade
std::size_t contentLength
Response & sendFragment(const std::string &chunk)
Response & cookie(const std::string &name, const std::string &value, const std::map< std::string, std::string > &options={})
Response & append(const std::string &field, const std::string &value)
void sendStatus(int statusCode)
Response & sendFragment(const char *chunk, std::size_t chunkLen)
void onSourceEof() override
void sendFile(const std::string &file, const std::function< void(int)> &callback)
Response & clearCookie(const std::string &name, const std::map< std::string, std::string > &options={})
ConnectionState connectionState
const std::string & header(const std::string &field)
SocketContextUpgradeFactory * select(Request &req, Response &res) override
static SocketContextUpgradeFactorySelector * instance()
SocketContextUpgradeFactory * load(const std::string &socketContextUpgradeName) override
static void link(const std::string &upgradeContextName, SocketContextUpgradeFactory *(*linkedPlugin)())
SocketContextUpgradeFactory()
void checkRefCount() final
void responseCompleted(bool success)
std::string to_http_date(struct tm *tm)
std::string file_mod_http_date(const std::string &filePath)
struct tm * gmtime(const time_t *timep)
bool ciEquals(const std::string &str1, const std::string &str2)
bool ciContains(const std::string &str1, const std::string &str2)
#define to_hex_str(int_val)