windows-nt/Source/XPSP1/NT/net/wlbs/nlbmgr/nlbsprov/mnlbcluster.h
2020-09-26 16:20:57 +08:00

326 lines
6.1 KiB
C++

#ifndef _MNLBCLUSTER_H
#define _MNLBCLUSTER_H
//
// Copyright (c) Microsoft. All Rights Reserved
//
// THIS IS UNPUBLISHED PROPRIETARY SOURCE CODE OF Microsoft.
// The copyright notice above does not evidence any
// actual or intended publication of such source code.
//
// OneLiner : MNLBCluster interface.
// DevUnit : wlbstest
// Author : Murtaza Hakim
//
// Description:
// -----------
// Include Files
#include "MNLBHost.h"
#include "Common.h"
#include "MNLBMachine.h"
#include <vector>
#include <memory>
#include <string>
#include <wbemidl.h>
#include <comdef.h>
using namespace std;
//
class MNLBCluster
{
public:
enum MNLBCluster_Error
{
MNLBCluster_SUCCESS = 0,
COM_FAILURE = 1,
CONNECT_FAILED = 2,
NO_CLUSTER = 3,
UNCONSTRUCTED = 4,
};
//
//
// Description:
// -----------
// constructor.
//
// Parameters:
// ----------
// cip IN : cluster ip address.
//
// Returns:
// -------
// none.
MNLBCluster( _bstr_t cip );
//
// Description:
// -----------
// default constructor.
//
// Parameters:
// ----------
// none.
//
// Returns:
// -------
MNLBCluster();
//
// Description:
// -----------
// copy constructor.
//
// Parameters:
// ----------
// mcluster IN : object to copy.
//
// Returns:
// -------
// none.
MNLBCluster(const MNLBCluster& mcluster);
//
// Description:
// -----------
// assignment operator
//
// Parameters:
// ----------
// rhs IN : object to assign.
//
// Returns:
// -------
// self
MNLBCluster&
operator=( const MNLBCluster& rhs );
//
// Description:
// -----------
// destructor
//
// Parameters:
// ----------
// none
//
// Returns:
// -------
// none.
~MNLBCluster();
//
// Description:
// -----------
// refreshes the wmi connection to the host
//
// Parameters:
// ----------
// none
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
refreshConnection();
//
// Description:
// -----------
// gets the cluster properties.
//
// Parameters:
// ----------
// cp OUT : cluster properties.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
getClusterProperties( ClusterProperties* cp );
//
// Description:
// -----------
// get the hosts participating in the cluster.
//
// Parameters:
// ----------
// hosts OUT : hosts who are members of the cluster.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
getHosts( vector<MNLBHost>* hosts );
// operations defined on cluster.
//
// Description:
// -----------
// starts cluster operations.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
start( unsigned long* retVal );
//
// Description:
// -----------
// stops cluster operations.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
stop( unsigned long* retVal );
//
// Description:
// -----------
// resume control over cluster operations.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
resume( unsigned long* retVal );
//
// Description:
// -----------
// suspend control over cluster operations.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
suspend( unsigned long* retVal );
//
// Description:
// -----------
// finishes all existing connections and
// stops cluster operations.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
drainstop( unsigned long* retVal );
//
// Description:
// -----------
// enables traffic for port rule.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
// port IN : port to affect or default is all ports.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
enable( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
//
// Description:
// -----------
// disables ALL traffic for port rule.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
// port IN : port to affect or default is all ports.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
disable( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
//
// Description:
// -----------
// disables NEW traffic for port rule.
//
// Parameters:
// ----------
// retVal OUT : return value of method ran.
// port IN : port to affect or default is all ports.
//
// Returns:
// -------
// SUCCESS else error code.
MNLBCluster_Error
drain( unsigned long* retVal, unsigned long port = Common::ALL_PORTS );
private:
_bstr_t m_clusterIP;
auto_ptr< MNLBMachine > m_pMachine;
};
//
// Ensure type safety
typedef class MNLBCluster MNLBCluster;
#endif