CCF
Loading...
Searching...
No Matches
http2_types.h
Go to the documentation of this file.
1// Copyright (c) Microsoft Corporation. All rights reserved.
2// Licensed under the Apache 2.0 License.
3#pragma once
4
5#include "ccf/ds/nonstd.h"
8#include "ccf/http_status.h"
9#include "ccf/rest_verb.h"
10#include "http_builder.h"
11
12#include <list>
13#include <memory>
14#include <optional>
15#include <string>
16#include <vector>
17
18namespace http2
19{
20 using StreamId = int32_t;
21 constexpr static StreamId DEFAULT_STREAM_ID = 0;
22
23 using StreamCloseCB = std::function<void(void)>;
24
25 // Used to keep track of response state between nghttp2 callbacks and to
26 // differentiate unary from streaming responses
27 enum class StreamResponseState : uint8_t
28 {
29 Uninitialised = 0, // No response to send yet
30 Closing, // Unary or last frame in stream
31 Streaming // Sending data frames to client
32 };
33
35 {
36 // Utility class to consume data from underlying data vector in chunks from
37 // nghttp2_data_source_read_callback
38 std::vector<uint8_t> data;
39 size_t consumed = 0;
40
41 DataSource() = default;
42
43 DataSource(std::vector<uint8_t>&& data_) : data(std::move(data_)) {}
44 };
45
65
67 {
68 public:
69 virtual ~AbstractParser() = default;
70 virtual void handle_completed(
71 StreamId stream_id, StreamData* stream_data) = 0;
72 virtual std::shared_ptr<StreamData> create_stream(StreamId stream_id) = 0;
73 virtual std::shared_ptr<StreamData> get_stream(StreamId stream_id) = 0;
74 virtual void destroy_stream(StreamId stream_id) = 0;
75 [[nodiscard]] virtual StreamId get_last_stream_id() const = 0;
77 const = 0;
78 };
79}
Definition http2_types.h:67
virtual void handle_completed(StreamId stream_id, StreamData *stream_data)=0
virtual ~AbstractParser()=default
virtual std::shared_ptr< StreamData > create_stream(StreamId stream_id)=0
virtual ccf::http::ParserConfiguration get_configuration() const =0
virtual void destroy_stream(StreamId stream_id)=0
virtual StreamId get_last_stream_id() const =0
virtual std::shared_ptr< StreamData > get_stream(StreamId stream_id)=0
std::map< std::string, std::string, std::less<> > HeaderMap
Definition http_header_map.h:10
Definition http2_callbacks.h:12
int32_t StreamId
Definition http2_types.h:20
std::function< void(void)> StreamCloseCB
Definition http2_types.h:23
StreamResponseState
Definition http2_types.h:28
STL namespace.
Definition http_configuration.h:24
Definition http2_types.h:35
DataSource(std::vector< uint8_t > &&data_)
Definition http2_types.h:43
size_t consumed
Definition http2_types.h:39
DataSource()=default
std::vector< uint8_t > data
Definition http2_types.h:38
Definition http2_types.h:49
std::vector< uint8_t > body
Definition http2_types.h:51
ccf::http::HeaderMap headers
Definition http2_types.h:50
Definition http2_types.h:56
DataSource body
Definition http2_types.h:59
bool has_trailers
Definition http2_types.h:58
StreamResponseState state
Definition http2_types.h:57
Definition http2_types.h:47
StreamCloseCB close_callback
Definition http2_types.h:63
Outgoing outgoing
Definition http2_types.h:61
Incoming incoming
Definition http2_types.h:53