mirror of
https://github.com/matrix-construct/construct
synced 2024-10-31 10:58:54 +01:00
67 lines
1.5 KiB
C
67 lines
1.5 KiB
C
|
// Matrix Construct
|
||
|
//
|
||
|
// Copyright (C) Matrix Construct Developers, Authors & Contributors
|
||
|
// Copyright (C) 2016-2019 Jason Volk <jason@zemos.net>
|
||
|
//
|
||
|
// Permission to use, copy, modify, and/or distribute this software for any
|
||
|
// purpose with or without fee is hereby granted, provided that the above
|
||
|
// copyright notice and this permission notice is present in all copies. The
|
||
|
// full license for this software is available in the LICENSE file.
|
||
|
|
||
|
#pragma once
|
||
|
#define HAVE_IRCD_HTTP2_SETTINGS_H
|
||
|
|
||
|
namespace ircd::http2
|
||
|
{
|
||
|
struct settings;
|
||
|
}
|
||
|
|
||
|
struct ircd::http2::frame::settings
|
||
|
{
|
||
|
enum code :uint16_t;
|
||
|
enum flag :decltype(frame::header::flags);
|
||
|
struct param;
|
||
|
|
||
|
vector_view<const struct param> param;
|
||
|
};
|
||
|
|
||
|
struct ircd::http2::frame::settings::param
|
||
|
{
|
||
|
uint16_t id {0};
|
||
|
uint32_t value {0};
|
||
|
}
|
||
|
__attribute__((packed));
|
||
|
|
||
|
namespace ircd::http2
|
||
|
{
|
||
|
string_view reflect(const frame::settings::code &);
|
||
|
}
|
||
|
|
||
|
enum ircd::http2::frame::settings::code
|
||
|
:uint16_t
|
||
|
{
|
||
|
HEADER_TABLE_SIZE = 0x1,
|
||
|
ENABLE_PUSH = 0x2,
|
||
|
MAX_CONCURRENT_STREAMS = 0x3,
|
||
|
INITIAL_WINDOW_SIZE = 0x4,
|
||
|
MAX_FRAME_SIZE = 0x5,
|
||
|
MAX_HEADER_LIST_SIZE = 0x6,
|
||
|
|
||
|
_NUM_
|
||
|
};
|
||
|
|
||
|
enum ircd::http2::frame::settings::flag
|
||
|
:std::underlying_type<ircd::http2::frame::settings::flag>::type
|
||
|
{
|
||
|
ACK = (1 << 0),
|
||
|
};
|
||
|
|
||
|
struct ircd::http2::settings
|
||
|
:std::array<uint32_t, num_of<frame::settings::code>()>
|
||
|
{
|
||
|
using code = frame::settings::code;
|
||
|
using array_type = std::array<uint32_t, num_of<code>()>;
|
||
|
|
||
|
settings();
|
||
|
};
|