//////////////////////////////////////////////////////////////////////////////
//
//  Copyright (c) 2000 Microsoft Corporation
//
//  Module Name:
//      CBaseClusterCleanup.h
//
//  Description:
//      Header file for CBaseClusterCleanup class.
//
//      The CBaseClusterCleanup class is a class that encapsulates the
//      cleanup of a node after it has been evicted from a cluster.
//
//  Implementation Files:
//      CBaseClusterCleanup.cpp
//
//  Maintained By:
//      Vij Vasu (Vvasu) 29-APR-2000
//
//////////////////////////////////////////////////////////////////////////////


// Make sure that this file is included only once per compile path.
#pragma once


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

// For the base class of this class.
#include "CBaseClusterAction.h"

// For the CStr class.
#include "CStr.h"


//////////////////////////////////////////////////////////////////////////////
//++
//
//  class CBaseClusterCleanup
//
//  Description:
//      The CBaseClusterCleanup class is a class that encapsulates the
//      cleanup of a node after it has been evicted from a cluster.
//
//--
//////////////////////////////////////////////////////////////////////////////
class CBaseClusterCleanup : public CBaseClusterAction
{
public:
    //////////////////////////////////////////////////////////////////////////
    // Constructors and destructors
    //////////////////////////////////////////////////////////////////////////

    // Constructor.
    CBaseClusterCleanup(
          CBCAInterface *   pbcaiInterfaceIn
        );

    // Default destructor.
    ~CBaseClusterCleanup() throw();


    //////////////////////////////////////////////////////////////////////////
    // Public member functions
    //////////////////////////////////////////////////////////////////////////

    // Cleanup this node.
    void 
        Commit();

    // Rolling back a cleanup operation.
    void 
        Rollback();


    // Returns the number of progress messages that this action will send.
    UINT
        UiGetMaxProgressTicks() const throw()
    {
        return BaseClass::UiGetMaxProgressTicks();
    }


private:
    //////////////////////////////////////////////////////////////////////////
    // Private types
    //////////////////////////////////////////////////////////////////////////
    typedef CBaseClusterAction BaseClass;


    //////////////////////////////////////////////////////////////////////////
    // Private data
    //////////////////////////////////////////////////////////////////////////

}; //*** class CBaseClusterCleanup