From b4d6df902253637f24647d3db2bc3781d69eec1c Mon Sep 17 00:00:00 2001 From: Joel Klinghed Date: Thu, 20 Feb 2025 22:54:56 +0100 Subject: Initial commit --- src/args.cc | 293 +++++++++++++++++++++++++++++++++++++++++++++++++++ src/args.hh | 56 ++++++++++ src/buffer.cc | 233 ++++++++++++++++++++++++++++++++++++++++ src/buffer.hh | 25 +++++ src/logger.hh | 51 +++++++++ src/logger_base.cc | 68 ++++++++++++ src/logger_base.hh | 25 +++++ src/logger_file.cc | 52 +++++++++ src/logger_file.hh | 16 +++ src/logger_null.cc | 18 ++++ src/logger_stdio.cc | 39 +++++++ src/logger_syslog.cc | 49 +++++++++ src/logger_syslog.hh | 14 +++ src/looper.hh | 38 +++++++ src/looper_poll.cc | 224 +++++++++++++++++++++++++++++++++++++++ src/main.cc | 153 +++++++++++++++++++++++++++ src/net.cc | 136 ++++++++++++++++++++++++ src/net.hh | 22 ++++ src/ro_buffer.cc | 27 +++++ src/ro_buffer.hh | 23 ++++ src/server.cc | 275 +++++++++++++++++++++++++++++++++++++++++++++++ src/server.hh | 26 +++++ src/unique_fd.cc | 9 ++ src/unique_fd.hh | 48 +++++++++ 24 files changed, 1920 insertions(+) create mode 100644 src/args.cc create mode 100644 src/args.hh create mode 100644 src/buffer.cc create mode 100644 src/buffer.hh create mode 100644 src/logger.hh create mode 100644 src/logger_base.cc create mode 100644 src/logger_base.hh create mode 100644 src/logger_file.cc create mode 100644 src/logger_file.hh create mode 100644 src/logger_null.cc create mode 100644 src/logger_stdio.cc create mode 100644 src/logger_syslog.cc create mode 100644 src/logger_syslog.hh create mode 100644 src/looper.hh create mode 100644 src/looper_poll.cc create mode 100644 src/main.cc create mode 100644 src/net.cc create mode 100644 src/net.hh create mode 100644 src/ro_buffer.cc create mode 100644 src/ro_buffer.hh create mode 100644 src/server.cc create mode 100644 src/server.hh create mode 100644 src/unique_fd.cc create mode 100644 src/unique_fd.hh (limited to 'src') diff --git a/src/args.cc b/src/args.cc new file mode 100644 index 0000000..a89c418 --- /dev/null +++ b/src/args.cc @@ -0,0 +1,293 @@ +#include "args.hh" + +#include +#include +#include +#include + +namespace { + +class OptionImpl : public OptionWithArg { +public: + OptionImpl(char short_name, std::string long_name, std::string description, + bool require_arg, std::string arg_description) + : short_name_(short_name), + long_name_(std::move(long_name)), + description_(std::move(description)), + require_arg_(require_arg), + arg_description_(std::move(arg_description)) { + } + + bool is_set() const override { return set_; } + + std::string const& arg() const override { return arg_; } + + char short_name() const { return short_name_; } + + std::string const& long_name() const { return long_name_; } + + std::string const& description() const { return description_; } + + bool require_arg() const { return require_arg_; } + + std::string const& arg_description() const { return arg_description_; } + + void reset() { + set_ = false; + arg_.clear(); + } + + void set() { + set_ = true; + } + + void set_arg(std::string arg) { + arg_ = std::move(arg); + } + +private: + char const short_name_; + std::string const long_name_; + std::string const description_; + bool const require_arg_; + std::string const arg_description_; + bool set_ = false; + std::string arg_; +}; + +class ArgsImpl : public Args { +public: + ArgsImpl() = default; + + std::shared_ptr