From 51abdc281dd6c6aa3e18ff15a9dc357e058f402a Mon Sep 17 00:00:00 2001 From: walker0643 <> Date: Sun, 11 Mar 2018 13:14:45 -0400 Subject: [PATCH] make DaemonApp a win32-only target --- src/cmd/barrierd/barrierd.cpp | 2 +- src/lib/barrier/{ => win32}/DaemonApp.cpp | 52 +++-------------------- src/lib/barrier/{ => win32}/DaemonApp.h | 4 -- 3 files changed, 6 insertions(+), 52 deletions(-) rename src/lib/barrier/{ => win32}/DaemonApp.cpp (93%) rename src/lib/barrier/{ => win32}/DaemonApp.h (96%) diff --git a/src/cmd/barrierd/barrierd.cpp b/src/cmd/barrierd/barrierd.cpp index 30423c7a..dd351f9a 100644 --- a/src/cmd/barrierd/barrierd.cpp +++ b/src/cmd/barrierd/barrierd.cpp @@ -16,7 +16,7 @@ * along with this program. If not, see . */ -#include "barrier/DaemonApp.h" +#include "barrier/win32/DaemonApp.h" #include diff --git a/src/lib/barrier/DaemonApp.cpp b/src/lib/barrier/win32/DaemonApp.cpp similarity index 93% rename from src/lib/barrier/DaemonApp.cpp rename to src/lib/barrier/win32/DaemonApp.cpp index 8a431f95..62fecf8f 100644 --- a/src/lib/barrier/DaemonApp.cpp +++ b/src/lib/barrier/win32/DaemonApp.cpp @@ -16,10 +16,7 @@ * along with this program. If not, see . */ -// TODO: split this class into windows and unix to get rid -// of all the #ifdefs! - -#include "barrier/DaemonApp.h" +#include "barrier/win32/DaemonApp.h" #include "barrier/App.h" #include "barrier/ArgParser.h" @@ -37,8 +34,6 @@ #include "base/log_outputters.h" #include "base/Log.h" -#if SYSAPI_WIN32 - #include "arch/win32/ArchMiscWindows.h" #include "arch/win32/XArchWindows.h" #include "barrier/Screen.h" @@ -50,8 +45,6 @@ #define WIN32_LEAN_AND_MEAN #include -#endif - #include #include #include @@ -68,25 +61,15 @@ mainLoopStatic() } int -unixMainLoopStatic(int, const char**) -{ - return mainLoopStatic(); -} - -#if SYSAPI_WIN32 -int -winMainLoopStatic(int, const char**) +mainLoopStatic(int, const char**) { return ArchMiscWindows::runDaemon(mainLoopStatic); } -#endif DaemonApp::DaemonApp() : m_ipcServer(nullptr), m_ipcLogOutputter(nullptr), - #if SYSAPI_WIN32 m_watchdog(nullptr), - #endif m_events(nullptr), m_fileLogOutputter(nullptr) { @@ -100,10 +83,8 @@ DaemonApp::~DaemonApp() int DaemonApp::run(int argc, char** argv) { -#if SYSAPI_WIN32 // win32 instance needed for threading, etc. ArchMiscWindows::setInstanceWin32(GetModuleHandle(NULL)); -#endif Arch arch; arch.init(); @@ -115,10 +96,8 @@ DaemonApp::run(int argc, char** argv) bool uninstall = false; try { -#if SYSAPI_WIN32 // sends debug messages to visual studio console window. log.insert(new MSWindowsDebugOutputter()); -#endif // default log level to system setting. string logLevel = arch.setting("LogLevel"); @@ -133,7 +112,6 @@ DaemonApp::run(int argc, char** argv) if (arg == "/f" || arg == "-f") { foreground = true; } -#if SYSAPI_WIN32 else if (arg == "/install") { uninstall = true; arch.installDaemon(); @@ -143,7 +121,6 @@ DaemonApp::run(int argc, char** argv) arch.uninstallDaemon(); return kExitSuccess; } -#endif else { stringstream ss; ss << "Unrecognized argument: " << arg; @@ -158,11 +135,7 @@ DaemonApp::run(int argc, char** argv) mainLoop(false); } else { -#if SYSAPI_WIN32 - arch.daemonize("Barrier", winMainLoopStatic); -#elif SYSAPI_UNIX - arch.daemonize("Barrier", unixMainLoopStatic); -#endif + arch.daemonize("Barrier", mainLoopStatic); } return kExitSuccess; @@ -214,10 +187,8 @@ DaemonApp::mainLoop(bool daemonized) m_ipcLogOutputter = new IpcLogOutputter(*m_ipcServer, kIpcClientGui, true); CLOG->insert(m_ipcLogOutputter); -#if SYSAPI_WIN32 m_watchdog = new MSWindowsWatchdog(daemonized, false, *m_ipcServer, *m_ipcLogOutputter); m_watchdog->setFileLogOutputter(m_fileLogOutputter); -#endif m_events->adoptHandler( m_events->forIpcServer().messageReceived(), m_ipcServer, @@ -225,8 +196,6 @@ DaemonApp::mainLoop(bool daemonized) m_ipcServer->listen(); -#if SYSAPI_WIN32 - // install the platform event queue to handle service stop events. m_events->adoptBuffer(new MSWindowsEventQueueBuffer(m_events)); @@ -238,13 +207,11 @@ DaemonApp::mainLoop(bool daemonized) } m_watchdog->startAsync(); -#endif + m_events->loop(); -#if SYSAPI_WIN32 m_watchdog->stop(); delete m_watchdog; -#endif m_events->removeHandler( m_events->forIpcServer().messageReceived(), m_ipcServer); @@ -266,11 +233,7 @@ DaemonApp::mainLoop(bool daemonized) void DaemonApp::foregroundError(const char* message) { -#if SYSAPI_WIN32 MessageBox(NULL, message, "Barrier Service", MB_OK | MB_ICONERROR); -#elif SYSAPI_UNIX - cerr << message << endl; -#endif } std::string @@ -338,7 +301,6 @@ DaemonApp::handleIpcMessage(const Event& e, void*) } } -#if SYSAPI_WIN32 // eg. no log-to-file while running in foreground if (m_fileLogOutputter != nullptr) { String logFilename; @@ -354,7 +316,6 @@ DaemonApp::handleIpcMessage(const Event& e, void*) } m_fileLogOutputter->setLogFilename(logFilename.c_str()); } -#endif } else { LOG((CLOG_DEBUG "empty command, elevate=%d", cm->elevate())); @@ -372,12 +333,11 @@ DaemonApp::handleIpcMessage(const Event& e, void*) LOG((CLOG_ERR "failed to save settings, %s", e.what())); } -#if SYSAPI_WIN32 // tell the relauncher about the new command. this causes the // relauncher to stop the existing command and start the new // command. m_watchdog->setCommand(command, cm->elevate()); -#endif + break; } @@ -392,10 +352,8 @@ DaemonApp::handleIpcMessage(const Event& e, void*) LOG((CLOG_DEBUG "ipc hello, type=%s", type.c_str())); -#if SYSAPI_WIN32 const char * serverstatus = m_watchdog->isProcessActive() ? "active" : "not active"; LOG((CLOG_INFO "server status: %s", serverstatus)); -#endif m_ipcLogOutputter->notifyBuffer(); break; diff --git a/src/lib/barrier/DaemonApp.h b/src/lib/barrier/win32/DaemonApp.h similarity index 96% rename from src/lib/barrier/DaemonApp.h rename to src/lib/barrier/win32/DaemonApp.h index e2e7bdf1..2a8484b3 100644 --- a/src/lib/barrier/DaemonApp.h +++ b/src/lib/barrier/win32/DaemonApp.h @@ -27,9 +27,7 @@ class Event; class IpcLogOutputter; class FileLogOutputter; -#if SYSAPI_WIN32 class MSWindowsWatchdog; -#endif class DaemonApp { @@ -48,9 +46,7 @@ private: public: static DaemonApp* s_instance; -#if SYSAPI_WIN32 MSWindowsWatchdog* m_watchdog; -#endif private: IpcServer* m_ipcServer;