//////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2000 Microsoft Corporation
//
//  Module Name:
//      CClusCfgCallback.h
//
//  Description:
//      Header file for Callback.cpp
//
//  Maintained By:
//      Galen Barbee (GalenB) 12-DEC-2000
//
//////////////////////////////////////////////////////////////////////////////


#pragma once


////////////////////////////////////////////////////////////////////////////////
// Include Files
//////////////////////////////////////////////////////////////////////////////

// For the IClusCfgCallback interface
#include "ClusCfgServer.h"


//////////////////////////////////////////////////////////////////////////////
//++
//
//  class Callback
//
//  Description:
//      This class implements the IClusCfgBaseCluster interface.
//
//--
//////////////////////////////////////////////////////////////////////////////
class Callback
    : public IClusCfgCallback
{
public:
    //////////////////////////////////////////////////////////////////////////
    // Constructor and Destructor
    //////////////////////////////////////////////////////////////////////////

    // Constructor
    Callback( void );

    // Destructor
    ~Callback( void );


    //////////////////////////////////////////////////////////////////////////
    // IUnknown methods
    //////////////////////////////////////////////////////////////////////////

    STDMETHOD( QueryInterface )( REFIID riid, void ** ppvObject );
    STDMETHOD_( ULONG, AddRef )( void );
    STDMETHOD_( ULONG, Release )( void );


    //////////////////////////////////////////////////////////////////////////
    //  IClusCfgCallback methods
    //////////////////////////////////////////////////////////////////////////
    STDMETHOD( SendStatusReport )(
            BSTR        bstrNodeNameIn,
            CLSID       clsidTaskMajorIn,
            CLSID       clsidTaskMinorIn,
            ULONG       ulMinIn,
            ULONG       ulMaxIn,
            ULONG       ulCurrentIn,
            HRESULT     hrStatusIn,
            BSTR        bstrDescriptionIn,
            FILETIME *  pftTimeIn,
            BSTR        bstrReferenceIn
            );

    //////////////////////////////////////////////////////////////////////////
    //  Other public methods
    //////////////////////////////////////////////////////////////////////////

    // Create an instance of this class.
    static HRESULT
        S_HrCreateInstance( IUnknown ** ppunkOut );

private:
    //////////////////////////////////////////////////////////////////////////
    // Private data
    //////////////////////////////////////////////////////////////////////////

    // Reference count for this object.
    LONG                m_cRef;

}; //*** class Callback