mirror of
https://github.com/debauchee/barrier.git
synced 2026-07-07 12:27:59 +08:00
- made unit testing easier by (mostly) removing the event queue singleton.
- fixed code style in many places (mostly indentation).
This commit is contained in:
@@ -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
|
||||
|
||||
Reference in New Issue
Block a user