windows-nt/Source/XPSP1/NT/ds/netapi/svcdlls/upssvc/apcsmart/ntsrvap.cxx

108 lines
2.3 KiB
C++
Raw Normal View History

2020-09-26 03:20:57 -05:00
/*
*
* NOTES:
*
* REVISIONS:
* pcy18Feb93: Spilt server app and client app to separate files
* TSC20May93: Substituted nttimmn.* for os2timmn.*
* TSC28May93: Added defines for object pointers, see ntthrdbl.cxx for details
* pam04Apr96: Changed to accomodate CWC (nt timer manager)
* pam15Jul96: Added Sockets startup and shutdown
* pam15Jul96: Changed utils.h to w32utils.h
* awm14Jan98: Added performance monitor object and code to initialize it
* tjg29Jan98: Clean up if performance monitor object fails to start
* mds24Aug98: Set thePerformanceMonitors to NULL in constructor. This stops
* back-end crash if the service is started without rengs.dll
* file or pwrchute.ini file (SIR #7059)
* mholly12May1999: add UPSTurnOff method
*/
#include "cdefine.h"
#include <windows.h>
#include "codes.h"
#include "nttimmn.h"
#include "ntsrvap.h"
#include "err.h"
#include "w32utils.h"
/*
Name :NTServerApplication
Synop :The constructor for the main application object.
*/
NTServerApplication::NTServerApplication(VOID)
{
}
NTServerApplication::~NTServerApplication(VOID)
{
}
/*
Name :Start
Synop :This starts the application running.
*/
INT NTServerApplication::Start()
{
/* Construct the timer manager before the host object
because it is needed when the host is constructed */
_theTimerManager = theTimerManager = new NTTimerManager(this);
// Construct everything before calling start on the parent class
ServerApplication::Start();
return (ErrNO_ERROR);
}
/*
Name :Idle
Synop :Idle is called whenever idle time exists in the system.
*/
VOID NTServerApplication::Idle()
{
Sleep((DWORD)2000);
}
/*
Name :Quit
Synop :Quits the application immediately.
*/
VOID NTServerApplication::Quit()
{
ServerApplication::Quit();
}
VOID NTServerApplication::UPSTurnOff()
{
if (theDeviceController) {
//
// first stop the polling of the UPS
//
theDeviceController->Stop();
}
if (theTimerManager) {
//
// don't want the timermanager sending
// anymore events
//
theTimerManager->Stop();
}
if (theDeviceController) {
theDeviceController->Set(TURN_OFF_UPS_ON_BATTERY, NULL);
Sleep(7000);
theDeviceController->Set(TURN_OFF_SMART_MODE, NULL);
}
}