IMService.cpp 1.29 KB
Newer Older
1 2 3 4 5 6 7
#include <windows.h>
#include "log.h"
#include "options.h"
#include "IMService.h"

IMService::IMService(void)
{
unknown's avatar
unknown committed
8 9
  serviceName= "MySqlManager";
  displayName= "MySQL Manager";
10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27
}

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
28
  ReportStatus((DWORD)SERVICE_RUNNING);
29 30 31 32 33 34 35 36 37

  // wait for main loop to terminate
}

void IMService::Log(const char *msg)
{
  log_info(msg);
}

unknown's avatar
unknown committed
38
int HandleServiceOptions(Options options)
39
{
40
  int ret_val= 0;
41 42 43

  IMService winService;

unknown's avatar
unknown committed
44
  if (options.install_as_service)
45 46 47 48
  {
    if (winService.IsInstalled())
      log_info("Service is already installed\n");
    else if (winService.Install())
49
      log_info("Service installed successfully\n");
50 51
    else
    {
52
      log_info("Service failed to install\n");
53
      ret_val= 1;
54 55 56 57 58 59
    }
  }
  else if (options.remove_service)
  {
    if (! winService.IsInstalled())
      log_info("Service is not installed\n");
60 61
    else if (winService.Remove())
      log_info("Service removed successfully\n");
unknown's avatar
unknown committed
62
    else
63
    {
64
      log_info("Service failed to remove\n");
65
      ret_val= 1;
66 67 68
    }
  }
  else
69
    ret_val= !winService.Init();
70 71
  return ret_val;
}