//
//  Copyright (c) 2001, Reson, Inc. All Rights Reserved.
//
//  Filename:   Service.h
//
//  Project:    6046.
//
//  Author(s):  W. Arcus
//
//  Purpose:    
//
//  Notes:

#if !defined(AFX_SERVICE_H__C19AC296_1D2B_4991_AC11_F0332D6873B6__INCLUDED_)
#define AFX_SERVICE_H__C19AC296_1D2B_4991_AC11_F0332D6873B6__INCLUDED_

#if _MSC_VER > 1000
#pragma once
#endif // _MSC_VER > 1000

class CComponentService
{
public:

                    CComponentService       (   DWORD               dwServiceType = SERVICE_WIN32_OWN_PROCESS );
    virtual        ~CComponentService       (   void );

    BOOL            RegisterHandler         (   LPCTSTR             lpszServiceName,
                                                LPHANDLER_FUNCTION  lpHandler);

    BOOL            ReportStatusChange      (   DWORD               dwCurrentState,
                                                DWORD               dwControlsAccepted        =   SERVICE_ACCEPT_STOP | 
                                                                                                  SERVICE_ACCEPT_PAUSE_CONTINUE |
                                                                                                  SERVICE_ACCEPT_SHUTDOWN,
                                                DWORD               dwWaitHint                =   5000,
                                                DWORD               dwWin32ExitCode           =   NO_ERROR,
                                                DWORD               dwProcessSpecificExitCode = 0 );
    
    BOOL             SetPendingStatus        (  DWORD               dwCurrentState,
                                                DWORD               dwWaitHint          = 5000,
                                                DWORD               dwCheckPoint        = 1 );
    
    BOOL             UpdateStatus            (   void );

    BOOL             SetStatus               (   void );

    static 
    LPHANDLER_FUNCTION      m_lpHandler;

private:

    SERVICE_STATUS_HANDLE   m_hServiceStatus;
    SERVICE_STATUS          m_ServiceStatus;

};

#endif // !defined(AFX_SERVICE_H__C19AC296_1D2B_4991_AC11_F0332D6873B6__INCLUDED_)
