magpie
Loading...
Searching...
No Matches
Http2Adapter.hpp
1#pragma once
2
3#include "magpie/application/Adapter.hpp"
4#include "magpie/transfer/Request.hpp"
5#include "magpie/transfer/Response.hpp"
6#include <nghttp2/nghttp2.h>
7
8#include <openssl/ssl.h>
9
10namespace magpie { class BaseApp; }
11
12namespace magpie::transport {
13class BaseConnection;
14}
15
16namespace magpie::application {
17
18struct UserData {
19 raven::Connection* conn;
20 BaseApp* app;
21
25 std::unordered_map<int, std::shared_ptr<Request>> requests;
26 std::unordered_map<int, std::shared_ptr<Response>> responses;
27 std::unordered_map<int, size_t> writeOffsets;
28};
29
30class Http2Adapter : public Adapter {
31private:
32 nghttp2_session* sess;
33 nghttp2_session_callbacks* callbacks;
34
35 BaseApp* app;
36 UserData data;
37public:
38 Http2Adapter(
39 raven::Connection* conn,
40 BaseApp* app
41 );
42 ~Http2Adapter();
43
44 virtual bool parse(
45 const raven::Buffer& buff,
46 std::size_t readBytes
47 ) override;
48
49 virtual bool onWriteReady(
50 raven::Connection* conn,
51 raven::Buffer&
52 ) override;
53};
54
55}
Definition AppDecl.hpp:14
Definition Adapter.hpp:9
Definition Http2Adapter.hpp:18
std::unordered_map< int, std::shared_ptr< Request > > requests
Definition Http2Adapter.hpp:25