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 virtual void CreateConnection(std::shared_ptr<netplus::con> &res);
71 virtual void RequestEvent(netplus::con &curcon,
const int tid, ULONG_PTR args);
72 virtual void ResponseEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
73 virtual void ConnectEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
74 virtual void DisconnectEvent(netplus::con &curcon,
const int tid,ULONG_PTR args);
76 std::string _altSvcH3;
80 netplus::TlsSessionCache _tlsSessionCache;
83 struct H3StreamBuffer {
84 std::vector<uint8_t> data;
86 std::mutex _h3BufferMutex;
87 std::map<uint64_t, H3StreamBuffer> _h3StreamBuffers;
88 std::atomic<int> _h3NextTid{0};
89 void _dispatchH2Stream(
HttpRequest &cureq, std::string &out,
91 const std::vector<hpack::HeaderField> &decoded,
92 const std::string &reqBody,
93 const int tid, ULONG_PTR args);
94 void _resumeH2Streams(
HttpRequest &cureq, std::string &out,
95 const int tid, ULONG_PTR args);
100 HttpD(
int argc,
char** argv);
101 HttpD(
const std::string &httpaddr,
int port,
int maxconnections,
const std::string &sslcertpath,
const std::string &sslkeypath);
103 std::vector<netplus::socket*> getServerSockets();
109 std::vector<std::unique_ptr<netplus::socket>> _ServerSockets;
110 std::map<std::string, netplus::ssl::CertificateBundle> _certBundle;