- made unit testing easier by (mostly) removing the event queue singleton.

- fixed code style in many places (mostly indentation).
This commit is contained in:
Nick Bolton
2013-06-29 14:17:49 +00:00
parent 13b2649fa0
commit 608074c041
143 changed files with 2220 additions and 2163 deletions

View File

@@ -42,7 +42,7 @@
#include "CArchMiscWindows.h"
#endif
#if SYSAPI_WIN32 && GAME_DEVICE_SUPPORT
#if SYSAPI_WIN32 && GAME_DEVICE_SUPPORT
#include <Windows.h>
#include "XInputHook.h"
#endif
@@ -60,10 +60,11 @@
#define RETRY_TIME 1.0
CClientApp::CClientApp(CreateTaskBarReceiverFunc createTaskBarReceiver) :
CApp(createTaskBarReceiver, new CArgs()),
s_client(NULL),
s_clientScreen(NULL)
CClientApp::CClientApp(IEventQueue* events, CreateTaskBarReceiverFunc createTaskBarReceiver) :
CApp(events, createTaskBarReceiver, new CArgs()),
m_events(events),
s_client(NULL),
s_clientScreen(NULL)
{
}
@@ -229,11 +230,11 @@ CClientApp::createScreen()
{
#if WINAPI_MSWINDOWS
return new CScreen(new CMSWindowsScreen(
false, args().m_noHooks, args().m_gameDevice, args().m_stopOnDeskSwitch));
false, args().m_noHooks, args().m_gameDevice, args().m_stopOnDeskSwitch, m_events), m_events);
#elif WINAPI_XWINDOWS
return new CScreen(new CXWindowsScreen(
args().m_display, false, args().m_disableXInitThreads,
args().m_yscroll, *EVENTQUEUE));
args().m_yscroll, m_events));
#elif WINAPI_CARBON
return new CScreen(new COSXScreen(false));
#endif
@@ -291,7 +292,7 @@ void
CClientApp::handleScreenError(const CEvent&, void*)
{
LOG((CLOG_CRIT "error on screen"));
EVENTQUEUE->addEvent(CEvent(CEvent::kQuit));
m_events->addEvent(CEvent(CEvent::kQuit));
}
@@ -299,7 +300,7 @@ CScreen*
CClientApp::openClientScreen()
{
CScreen* screen = createScreen();
EVENTQUEUE->adoptHandler(IScreen::getErrorEvent(),
m_events->adoptHandler(m_events->forIScreen().error(),
screen->getEventTarget(),
new TMethodEventJob<CClientApp>(
this, &CClientApp::handleScreenError));
@@ -311,7 +312,7 @@ void
CClientApp::closeClientScreen(CScreen* screen)
{
if (screen != NULL) {
EVENTQUEUE->removeHandler(IScreen::getErrorEvent(),
m_events->removeHandler(m_events->forIScreen().error(),
screen->getEventTarget());
delete screen;
}
@@ -323,8 +324,8 @@ CClientApp::handleClientRestart(const CEvent&, void* vtimer)
{
// discard old timer
CEventQueueTimer* timer = reinterpret_cast<CEventQueueTimer*>(vtimer);
EVENTQUEUE->deleteTimer(timer);
EVENTQUEUE->removeHandler(CEvent::kTimer, timer);
m_events->deleteTimer(timer);
m_events->removeHandler(CEvent::kTimer, timer);
// reconnect
startClient();
@@ -336,8 +337,8 @@ CClientApp::scheduleClientRestart(double retryTime)
{
// install a timer and handler to retry later
LOG((CLOG_DEBUG "retry in %.0f seconds", retryTime));
CEventQueueTimer* timer = EVENTQUEUE->newOneShotTimer(retryTime, NULL);
EVENTQUEUE->adoptHandler(CEvent::kTimer, timer,
CEventQueueTimer* timer = m_events->newOneShotTimer(retryTime, NULL);
m_events->adoptHandler(CEvent::kTimer, timer,
new TMethodEventJob<CClientApp>(this, &CClientApp::handleClientRestart, timer));
}
@@ -360,7 +361,7 @@ CClientApp::handleClientFailed(const CEvent& e, void*)
updateStatus(CString("Failed to connect to server: ") + info->m_what);
if (!args().m_restartable || !info->m_retry) {
LOG((CLOG_ERR "failed to connect to server: %s", info->m_what.c_str()));
EVENTQUEUE->addEvent(CEvent(CEvent::kQuit));
m_events->addEvent(CEvent(CEvent::kQuit));
}
else {
LOG((CLOG_WARN "failed to connect to server: %s", info->m_what.c_str()));
@@ -377,7 +378,7 @@ CClientApp::handleClientDisconnected(const CEvent&, void*)
{
LOG((CLOG_NOTE "disconnected from server"));
if (!args().m_restartable) {
EVENTQUEUE->addEvent(CEvent(CEvent::kQuit));
m_events->addEvent(CEvent(CEvent::kQuit));
}
else if (!m_suspended) {
s_client->connect();
@@ -390,21 +391,21 @@ CClient*
CClientApp::openClient(const CString& name, const CNetworkAddress& address, CScreen* screen, const CCryptoOptions& crypto)
{
CClient* client = new CClient(
EVENTQUEUE, name, address, new CTCPSocketFactory, NULL, screen, crypto);
m_events, name, address, new CTCPSocketFactory(m_events), NULL, screen, crypto);
try {
EVENTQUEUE->adoptHandler(
CClient::getConnectedEvent(),
m_events->adoptHandler(
m_events->forCClient().connected(),
client->getEventTarget(),
new TMethodEventJob<CClientApp>(this, &CClientApp::handleClientConnected));
EVENTQUEUE->adoptHandler(
CClient::getConnectionFailedEvent(),
m_events->adoptHandler(
m_events->forCClient().connectionFailed(),
client->getEventTarget(),
new TMethodEventJob<CClientApp>(this, &CClientApp::handleClientFailed));
EVENTQUEUE->adoptHandler(
CClient::getDisconnectedEvent(),
m_events->adoptHandler(
m_events->forCClient().disconnected(),
client->getEventTarget(),
new TMethodEventJob<CClientApp>(this, &CClientApp::handleClientDisconnected));
@@ -424,9 +425,9 @@ CClientApp::closeClient(CClient* client)
return;
}
EVENTQUEUE->removeHandler(CClient::getConnectedEvent(), client);
EVENTQUEUE->removeHandler(CClient::getConnectionFailedEvent(), client);
EVENTQUEUE->removeHandler(CClient::getDisconnectedEvent(), client);
m_events->removeHandler(m_events->forCClient().connected(), client);
m_events->removeHandler(m_events->forCClient().connectionFailed(), client);
m_events->removeHandler(m_events->forCClient().disconnected(), client);
delete client;
}
@@ -532,13 +533,13 @@ CClientApp::mainLoop()
}
// load all available plugins.
ARCH->plugin().init(s_clientScreen->getEventTarget());
ARCH->plugin().init(s_clientScreen->getEventTarget(), m_events);
// run event loop. if startClient() failed we're supposed to retry
// later. the timer installed by startClient() will take care of
// that.
DAEMON_RUNNING(true);
EVENTQUEUE->loop();
m_events->loop();
DAEMON_RUNNING(false);
// close down