#include <windows.h> #include "log.h" #include "options.h" #include "IMService.h" IMService::IMService(void) { serviceName= "MySqlManager"; displayName= "MySQL Manager"; } IMService::~IMService(void) { } void IMService::Stop() { ReportStatus(SERVICE_STOP_PENDING); // stop the IM work } void IMService::Run() { // report to the SCM that we're about to start ReportStatus((DWORD)SERVICE_START_PENDING); // init goes here ReportStatus((DWORD)SERVICE_RUNNING); // wait for main loop to terminate } void IMService::Log(const char *msg) { log_info(msg); } int HandleServiceOptions(Options options) { int ret_val= 0; IMService winService; if (options.install_as_service) { if (winService.IsInstalled()) log_info("Service is already installed\n"); else if (winService.Install()) log_info("Service installed successfully\n"); else { log_info("Service failed to install\n"); ret_val= 1; } } else if (options.remove_service) { if (! winService.IsInstalled()) log_info("Service is not installed\n"); else if (winService.Remove()) log_info("Service removed successfully\n"); else { log_info("Service failed to remove\n"); ret_val= 1; } } else ret_val= !winService.Init(); return ret_val; }