/* * Copyright (C) 2016+ AzerothCore , released under GNU GPL v2 license: http://github.com/azerothcore/azerothcore-wotlk/LICENSE-GPL2 * Copyright (C) 2008-2016 TrinityCore * Copyright (C) 2005-2009 MaNGOS */ /** \file \ingroup Trinityd */ #include "Common.h" #include "Config.h" #include "Log.h" #include "RARunnable.h" #include "World.h" #include #include #include #include #include #include "RASocket.h" RARunnable::RARunnable() { ACE_Reactor_Impl* imp; #if defined (ACE_HAS_EVENT_POLL) || defined (ACE_HAS_DEV_POLL) imp = new ACE_Dev_Poll_Reactor(); imp->max_notify_iterations (128); imp->restart (1); #else imp = new ACE_TP_Reactor(); imp->max_notify_iterations (128); #endif m_Reactor = new ACE_Reactor (imp, 1); } RARunnable::~RARunnable() { delete m_Reactor; } void RARunnable::run() { if (!sConfigMgr->GetBoolDefault("Ra.Enable", false)) return; ACE_Acceptor acceptor; uint16 raPort = uint16(sConfigMgr->GetIntDefault("Ra.Port", 3443)); std::string stringIp = sConfigMgr->GetStringDefault("Ra.IP", "0.0.0.0"); ACE_INET_Addr listenAddress(raPort, stringIp.c_str()); if (acceptor.open(listenAddress, m_Reactor) == -1) { sLog->outError("Trinity RA can not bind to port %d on %s", raPort, stringIp.c_str()); return; } sLog->outString("Starting Trinity RA on port %d on %s", raPort, stringIp.c_str()); while (!World::IsStopped()) { ACE_Time_Value interval(0, 100000); if (m_Reactor->run_reactor_event_loop(interval) == -1) break; } #ifdef ENABLE_EXTRAS && ENABLE_EXTRA_LOGS sLog->outStaticDebug("Trinity RA thread exiting"); #endif }