| #ifndef QUICHE_HTTP2_ADAPTER_NGHTTP2_SESSION_H_ |
| #define QUICHE_HTTP2_ADAPTER_NGHTTP2_SESSION_H_ |
| #include "http2/adapter/http2_session.h" |
| #include "http2/adapter/nghttp2_util.h" |
| #include "third_party/nghttp2/src/lib/includes/nghttp2/nghttp2.h" |
| // A C++ wrapper around common nghttp2_session operations. |
| class NgHttp2Session : public Http2Session { |
| NgHttp2Session(Perspective perspective, |
| nghttp2_session_callbacks* callbacks, |
| ~NgHttp2Session() override; |
| ssize_t ProcessBytes(absl::string_view bytes) override; |
| int Consume(Http2StreamId stream_id, size_t num_bytes) override; |
| bool want_read() const override; |
| bool want_write() const override; |
| int GetRemoteWindowSize() const override; |
| nghttp2_session* raw_ptr() const { return session_.get(); } |
| using OptionsDeleter = void (&)(nghttp2_option*); |
| nghttp2_session_unique_ptr session_; |
| std::unique_ptr<nghttp2_option, OptionsDeleter> options_; |
| Perspective perspective_; |
| #endif // QUICHE_HTTP2_ADAPTER_NGHTTP2_SESSION_H_ |