+ ClientProtocol::Messages::Quit quitmsg;
+ ClientProtocol::Event quitevent;
+ ClientProtocol::Messages::Quit operquitmsg;
+ ClientProtocol::Event operquitevent;
+
+ void Execute(LocalUser* user) CXX11_OVERRIDE
+ {
+ user->Send(user->IsOper() ? operquitevent : quitevent);
+ }
+
+ public:
+ WriteCommonQuit(User* user, const std::string& msg, const std::string& opermsg)
+ : quitmsg(user, msg)
+ , quitevent(ServerInstance->GetRFCEvents().quit, quitmsg)
+ , operquitmsg(user, opermsg)
+ , operquitevent(ServerInstance->GetRFCEvents().quit, operquitmsg)
+ {
+ user->ForEachNeighbor(*this, false);
+ }
+ };
+
+ void CheckPingTimeout(LocalUser* user)