27 #include <irccd/sysconfig.hpp>
31 #include <string_view>
35 #include <boost/asio.hpp>
37 #if defined(IRCCD_HAVE_SSL)
38 # include <boost/asio/ssl.hpp>
1215 template <
typename Enum>
1216 auto is(Enum e)
const noexcept ->
bool
1219 return std::stoi(
command) ==
static_cast<int>(e);
1232 auto get(
unsigned short index)
const noexcept ->
const std::string&;
1240 auto is_ctcp(
unsigned short index)
const noexcept -> bool;
1249 auto ctcp(
unsigned short index)
const -> std::string;
1297 boost::asio::io_context& service_;
1298 boost::asio::ip::tcp::socket socket_{service_};
1299 boost::asio::ip::tcp::resolver resolver_{service_};
1300 boost::asio::streambuf input_{1024};
1301 boost::asio::streambuf output_;
1307 #if defined(IRCCD_HAVE_SSL)
1308 boost::asio::ssl::context context_{boost::asio::ssl::context::tlsv12};
1309 boost::asio::ssl::stream<boost::asio::ip::tcp::socket&> ssl_socket_{socket_, context_};
1312 #if !defined(NDEBUG)
1313 bool is_connecting_{
false};
1314 bool is_receiving_{
false};
1315 bool is_sending_{
false};
1319 void connect(
const boost::asio::ip::tcp::resolver::results_type&,
const connect_handler&);
1320 void resolve(std::string_view, std::string_view,
const connect_handler&);
Abstract connection to a server.
Definition: irc.hpp:1279
connection(boost::asio::io_service &service)
void recv(recv_handler handler)
std::function< void(std::error_code)> send_handler
Definition: irc.hpp:1294
virtual ~connection()=default
void use_ipv6(bool enable=true) noexcept
void use_ipv4(bool enable=true) noexcept
void send(std::string_view message, send_handler handler)
std::function< void(std::error_code, message)> recv_handler
Definition: irc.hpp:1289
void use_ssl(bool enable=true) noexcept
std::function< void(std::error_code)> connect_handler
Definition: irc.hpp:1284
err
Describe errors.
Definition: irc.hpp:55
rpl
Describe numeric replies.
Definition: irc.hpp:501
Parent namespace.
Definition: acceptor.hpp:43
Describe a IRC message.
Definition: irc.hpp:1204
auto is_ctcp(unsigned short index) const noexcept -> bool
std::string prefix
optional prefix
Definition: irc.hpp:1205
auto get(unsigned short index) const noexcept -> const std::string &
std::vector< std::string > args
parameters
Definition: irc.hpp:1207
std::string command
command (maybe string or code)
Definition: irc.hpp:1206
static auto parse(const std::string &line) -> message
auto is(Enum e) const noexcept -> bool
Definition: irc.hpp:1216
auto ctcp(unsigned short index) const -> std::string
Describe a user.
Definition: irc.hpp:1263
static auto parse(std::string_view line) -> user
std::string host
The hostname.
Definition: irc.hpp:1265
std::string nick
The nickname.
Definition: irc.hpp:1264