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