mirror of
https://github.com/MariaDB/server.git
synced 2025-07-29 05:21:33 +03:00
Patch for IM in scope of working on BUG#24415: Instance manager test
im_daemon_life_cycle fails randomly. 1. Move IM-angel functionality into a separate file, create Angel class. 2. Be more verbose; 3. Fix typo in FLUSH INSTANCES implementation; 4. Polishing. mysql-test/r/im_options.result: Updated result file. mysql-test/t/im_cmd_line.imtest: Updated test. server-tools/instance-manager/IMService.cpp: Move HandleServiceOptions() into IMService::main(). server-tools/instance-manager/IMService.h: Move HandleServiceOptions() into IMService::main(). server-tools/instance-manager/Makefile.am: Added angel.cc and angel.h. server-tools/instance-manager/WindowsService.cpp: Initialize class-members in constructor. server-tools/instance-manager/WindowsService.h: Initialize class-members in constructor. server-tools/instance-manager/commands.cc: Return actual error code (ER_OUT_OF_RESOURCES or ER_THERE_IS_ACTIVE_INSTANCE) from FLUSH INSTANCES. server-tools/instance-manager/manager.cc: 1. Return actual error code from Manager::flush_instances(). 2. Be more verbose. server-tools/instance-manager/manager.h: Return actual error code from Manager::flush_instances(). server-tools/instance-manager/mysqlmanager.cc: Move IM-angel functionality into separate file (angel.cc). server-tools/instance-manager/priv.cc: Use return bool datatype instead int{ 0, 1 }. server-tools/instance-manager/priv.h: Use return bool datatype instead int{ 0, 1 }. server-tools/instance-manager/angel.cc: IM-angel functionality. server-tools/instance-manager/angel.h: IM-angel functionality.
This commit is contained in:
@ -14,19 +14,29 @@
|
||||
Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA */
|
||||
|
||||
#include <windows.h>
|
||||
#include <assert.h>
|
||||
#include ".\windowsservice.h"
|
||||
|
||||
#include "WindowsService.h"
|
||||
|
||||
static WindowsService *gService;
|
||||
|
||||
WindowsService::WindowsService(void) :
|
||||
WindowsService::WindowsService(const char *p_serviceName,
|
||||
const char *p_displayName) :
|
||||
statusCheckpoint(0),
|
||||
serviceName(NULL),
|
||||
serviceName(p_serviceName),
|
||||
displayName(p_displayName),
|
||||
inited(FALSE),
|
||||
dwAcceptedControls(SERVICE_ACCEPT_STOP),
|
||||
debugging(FALSE)
|
||||
{
|
||||
DBUG_ASSERT(serviceName != NULL);
|
||||
|
||||
/* TODO: shouldn't we check displayName too (can it really be NULL)? */
|
||||
|
||||
/* WindowsService is assumed to be singleton. Let's assure this. */
|
||||
DBUG_ASSERT(gService == NULL);
|
||||
|
||||
gService= this;
|
||||
|
||||
status.dwServiceType= SERVICE_WIN32_OWN_PROCESS;
|
||||
status.dwServiceSpecificExitCode= 0;
|
||||
}
|
||||
@ -35,7 +45,7 @@ WindowsService::~WindowsService(void)
|
||||
{
|
||||
}
|
||||
|
||||
BOOL WindowsService::Install()
|
||||
BOOL WindowsService::Install(const char *username, const char *password)
|
||||
{
|
||||
bool ret_val= FALSE;
|
||||
SC_HANDLE newService;
|
||||
@ -70,7 +80,7 @@ BOOL WindowsService::Install()
|
||||
|
||||
BOOL WindowsService::Init()
|
||||
{
|
||||
assert(serviceName != NULL);
|
||||
DBUG_ASSERT(serviceName != NULL);
|
||||
|
||||
if (inited)
|
||||
return TRUE;
|
||||
@ -207,7 +217,7 @@ void WindowsService::HandleControlCode(DWORD opcode)
|
||||
|
||||
void WINAPI WindowsService::ServiceMain(DWORD argc, LPTSTR *argv)
|
||||
{
|
||||
assert(gService != NULL);
|
||||
DBUG_ASSERT(gService != NULL);
|
||||
|
||||
// register our service control handler:
|
||||
gService->RegisterAndRun(argc, argv);
|
||||
@ -215,7 +225,7 @@ void WINAPI WindowsService::ServiceMain(DWORD argc, LPTSTR *argv)
|
||||
|
||||
void WINAPI WindowsService::ControlHandler(DWORD opcode)
|
||||
{
|
||||
assert(gService != NULL);
|
||||
DBUG_ASSERT(gService != NULL);
|
||||
|
||||
return gService->HandleControlCode(opcode);
|
||||
}
|
||||
|
Reference in New Issue
Block a user