51 HttpEvent(std::vector<netplus::socket*> serversocket,
int timeout = 1000);
53 virtual void RequestEvent(
HttpRequest &curreq,
const int tid,ULONG_PTR args);
54 virtual void ResponseEvent(
HttpRequest &curreq,
const int tid,ULONG_PTR args);
55 virtual void ConnectEvent(
HttpRequest &curreq,
const int tid,ULONG_PTR args);
56 virtual void DisconnectEvent(
HttpRequest &curreq,
const int tid,ULONG_PTR args);
58 virtual bool Http2RequestEvent(netplus::con &curcon,
61 const std::string &alpn,
62 const netplus::ssl::FramingCallback &frame_cb);
63 virtual void Http3StreamEvent(netplus::socket *sock,
65 const std::vector<uint8_t> &data,
69 void CreateConnection(std::shared_ptr<netplus::con> &res);
70 std::string _altSvcH3;
74 netplus::TlsSessionCache _tlsSessionCache;
77 struct H3StreamBuffer {
78 std::vector<uint8_t> data;
80 std::mutex _h3BufferMutex;
81 std::map<uint64_t, H3StreamBuffer> _h3StreamBuffers;
82 std::atomic<int> _h3NextTid{0};
83 void _dispatchH2Stream(
HttpRequest &cureq, std::string &out,
85 const std::vector<hpack::HeaderField> &decoded,
86 const std::string &reqBody,
87 const int tid, ULONG_PTR args);
88 void _resumeH2Streams(
HttpRequest &cureq, std::string &out,
89 const int tid, ULONG_PTR args);
90 void RequestEvent(netplus::con &curcon,
const int tid, ULONG_PTR args);
91 void ResponseEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
92 void ConnectEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
93 void DisconnectEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
99 HttpD(
int argc,
char** argv);
100 HttpD(
const std::string &httpaddr,
int port,
int maxconnections,
const std::string &sslcertpath,
const std::string &sslkeypath);
102 std::vector<netplus::socket*> getServerSockets();
108 std::vector<std::unique_ptr<netplus::socket>> _ServerSockets;
109 std::map<std::string, netplus::ssl::CertificateBundle> _certBundle;