Mercurial > irccd
changeset 244:f71fa7d19ceb
Irccd: use Server member variables directly
author | David Demelier <markand@malikania.fr> |
---|---|
date | Wed, 17 Aug 2016 18:24:56 +0200 |
parents | d395aeef63eb |
children | 520bf779bf28 |
files | lib/irccd/server-state-connected.cpp lib/irccd/server-state-connecting.cpp lib/irccd/server-state-connecting.hpp lib/irccd/server-state-disconnected.cpp lib/irccd/server.hpp |
diffstat | 5 files changed, 40 insertions(+), 52 deletions(-) [+] |
line wrap: on
line diff
--- a/lib/irccd/server-state-connected.cpp Wed Aug 17 18:12:34 2016 +0200 +++ b/lib/irccd/server-state-connected.cpp Wed Aug 17 18:24:56 2016 +0200 @@ -29,19 +29,19 @@ void Server::ConnectedState::prepare(Server &server, fd_set &setinput, fd_set &setoutput, net::Handle &maxfd) { - if (!irc_is_connected(server.session())) { - log::warning() << "server " << server.name() << ": disconnected" << std::endl; + if (!irc_is_connected(*server.m_session)) { + log::warning() << "server " << server.m_name << ": disconnected" << std::endl; - if (server.reconnectDelay() > 0) - log::warning("server {}: retrying in {} seconds"_format(server.name(), server.reconnectDelay())); + if (server.m_reconnectDelay > 0) + log::warning("server {}: retrying in {} seconds"_format(server.m_name, server.m_reconnectDelay)); server.next(std::make_unique<DisconnectedState>()); } else if (server.m_timer.elapsed() >= server.m_pingTimeout * 1000) { - log::warning() << "server " << server.name() << ": ping timeout after " + log::warning() << "server " << server.m_name << ": ping timeout after " << (server.m_timer.elapsed() / 1000) << " seconds" << std::endl; server.next(std::make_unique<DisconnectedState>()); } else - irc_add_select_descriptors(server.session(), &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); + irc_add_select_descriptors(*server.m_session, &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); } std::string Server::ConnectedState::ident() const
--- a/lib/irccd/server-state-connecting.cpp Wed Aug 17 18:12:34 2016 +0200 +++ b/lib/irccd/server-state-connecting.cpp Wed Aug 17 18:24:56 2016 +0200 @@ -36,39 +36,35 @@ namespace irccd { -namespace { - -bool connect(Server &server) +bool Server::ConnectingState::connect(Server &server) { - const char *password = server.password().empty() ? nullptr : server.password().c_str(); - std::string host = server.host(); + const char *password = server.m_password.empty() ? nullptr : server.m_password.c_str(); + std::string host = server.m_host; int code; // libircclient requires # for SSL connection. #if defined(WITH_SSL) - if (server.flags() & Server::Ssl) + if (server.m_flags & Server::Ssl) host.insert(0, 1, '#'); - if (!(server.flags() & Server::SslVerify)) - irc_option_set(server.session(), LIBIRC_OPTION_SSL_NO_VERIFY); + if (!(server.m_flags & Server::SslVerify)) + irc_option_set(*server.m_session, LIBIRC_OPTION_SSL_NO_VERIFY); #endif if (server.flags() & Server::Ipv6) { - code = irc_connect6(server.session(), host.c_str(), server.port(), password, - server.nickname().c_str(), - server.username().c_str(), - server.realname().c_str()); + code = irc_connect6(*server.m_session, host.c_str(), server.m_port, password, + server.m_nickname.c_str(), + server.m_username.c_str(), + server.m_realname.c_str()); } else { - code = irc_connect(server.session(), host.c_str(), server.port(), password, - server.nickname().c_str(), - server.username().c_str(), - server.realname().c_str()); + code = irc_connect(*server.m_session, host.c_str(), server.m_port, password, + server.m_nickname.c_str(), + server.m_username.c_str(), + server.m_realname.c_str()); } return code == 0; } -} // !namespace - void Server::ConnectingState::prepare(Server &server, fd_set &setinput, fd_set &setoutput, net::Handle &maxfd) { /* @@ -83,19 +79,19 @@ * Otherwise, the libircclient event_connect will change the state. */ if (m_started) { - if (m_timer.elapsed() > static_cast<unsigned>(server.reconnectDelay() * 1000)) { + if (m_timer.elapsed() > static_cast<unsigned>(server.m_reconnectDelay * 1000)) { log::warning() << "server " << server.name() << ": timeout while connecting" << std::endl; server.next(std::make_unique<DisconnectedState>()); - } else if (!irc_is_connected(server.session())) { - log::warning() << "server " << server.name() << ": error while connecting: "; - log::warning() << irc_strerror(irc_errno(server.session())) << std::endl; + } else if (!irc_is_connected(*server.m_session)) { + log::warning() << "server " << server.m_name << ": error while connecting: "; + log::warning() << irc_strerror(irc_errno(*server.m_session)) << std::endl; - if (server.reconnectTries() != 0) - log::warning("server {}: retrying in {} seconds"_format(server.name(), server.reconnectDelay())); + if (server.m_reconnectTries != 0) + log::warning("server {}: retrying in {} seconds"_format(server.m_name, server.m_reconnectDelay)); server.next(std::make_unique<DisconnectedState>()); } else - irc_add_select_descriptors(server.session(), &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); + irc_add_select_descriptors(*server.m_session, &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); } else { /* * This is needed if irccd is started before DHCP or if DNS cache is outdated. @@ -105,17 +101,17 @@ #if !defined(IRCCD_SYSTEM_WINDOWS) (void)res_init(); #endif - log::info("server {}: trying to connect to {}, port {}"_format(server.name(), server.host(), server.port())); + log::info("server {}: trying to connect to {}, port {}"_format(server.m_name, server.m_host, server.m_port)); if (!connect(server)) { - log::warning() << "server " << server.name() << ": disconnected while connecting: "; - log::warning() << irc_strerror(irc_errno(server.session())) << std::endl; + log::warning() << "server " << server.m_name << ": disconnected while connecting: "; + log::warning() << irc_strerror(irc_errno(*server.m_session)) << std::endl; server.next(std::make_unique<DisconnectedState>()); } else { m_started = true; - if (irc_is_connected(server.session())) - irc_add_select_descriptors(server.session(), &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); + if (irc_is_connected(*server.m_session)) + irc_add_select_descriptors(*server.m_session, &setinput, &setoutput, reinterpret_cast<int *>(&maxfd)); } } }
--- a/lib/irccd/server-state-connecting.hpp Wed Aug 17 18:12:34 2016 +0200 +++ b/lib/irccd/server-state-connecting.hpp Wed Aug 17 18:24:56 2016 +0200 @@ -38,6 +38,8 @@ bool m_started{false}; ElapsedTimer m_timer; + bool connect(Server &server); + public: /** * \copydoc State::prepare
--- a/lib/irccd/server-state-disconnected.cpp Wed Aug 17 18:12:34 2016 +0200 +++ b/lib/irccd/server-state-disconnected.cpp Wed Aug 17 18:24:56 2016 +0200 @@ -25,15 +25,15 @@ void Server::DisconnectedState::prepare(Server &server, fd_set &, fd_set &, net::Handle &) { - if (server.reconnectTries() == 0) { - log::warning() << "server " << server.name() << ": reconnection disabled, skipping" << std::endl; + if (server.m_reconnectTries == 0) { + log::warning() << "server " << server.m_name << ": reconnection disabled, skipping" << std::endl; server.onDie(); - } else if (server.reconnectTries() > 0 && server.m_recocur > server.reconnectTries()) { - log::warning() << "server " << server.name() << ": giving up" << std::endl; + } else if (server.m_reconnectTries > 0 && server.m_recocur > server.m_reconnectTries) { + log::warning() << "server " << server.m_name << ": giving up" << std::endl; server.onDie(); } else { - if (m_timer.elapsed() > static_cast<unsigned>(server.reconnectDelay() * 1000)) { - irc_disconnect(server.session()); + if (m_timer.elapsed() > static_cast<unsigned>(server.m_reconnectDelay * 1000)) { + irc_disconnect(*server.m_session); server.m_recocur ++; server.next(std::make_unique<ConnectingState>());
--- a/lib/irccd/server.hpp Wed Aug 17 18:12:34 2016 +0200 +++ b/lib/irccd/server.hpp Wed Aug 17 18:24:56 2016 +0200 @@ -792,16 +792,6 @@ } /** - * Get the private session. - * - * \return the session - */ - inline Session &session() noexcept - { - return *m_session; - } - - /** * Set the next state, it is not changed immediately but on next iteration. * * \param state the new state