Seafire-Protocol/seafire/protocol/protocol-version.hxx
2025-03-07 22:15:49 +01:00

67 lines
1.3 KiB
C++

#ifndef seafire__protocol__protocol_version_hxx_
#define seafire__protocol__protocol_version_hxx_
#include <seafire/common/io/buffer.hxx>
#include <asio.hpp>
#include <cstdint>
#include <ostream>
#include <string>
#include <vector>
namespace seafire::protocol
{
/// Represents an HTTP version.
///
struct version_t
{
/// Construct a new protocol version.
///
constexpr
version_t() noexcept
: major{0}, minor{0}
{}
/// Construct a new protocol version.
///
/// \param major The major version number.
/// \param minor The minor version number.
///
constexpr
version_t(std::uint16_t major, std::uint16_t minor) noexcept
: major{major}, minor{minor}
{}
bool
operator==(version_t const&) const noexcept;
bool
operator!=(version_t const&) const noexcept;
std::uint16_t major;
std::uint16_t minor;
};
inline constexpr version_t const http_1_0{1, 0};
inline constexpr version_t const http_1_1{1, 1};
std::ostream&
to_stream(std::ostream&, version_t const&);
std::string
to_string(version_t const&);
std::ostream&
operator<<(std::ostream&, version_t const&);
void
to_buffers(common::io::const_buffers_t&, version_t const&);
} // namespace seafire::protocol
#endif