You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
124 lines
2.7 KiB
124 lines
2.7 KiB
// Copyright (c) Microsoft. All rights reserved.
|
|
//
|
|
// This is unpublished source code of Microsoft.
|
|
// The copyright notice above does not evidence any
|
|
// actual or intended publication of such source code.
|
|
|
|
// OneLiner : Implementation of MNLBCluster
|
|
// DevUnit : wlbstest
|
|
// Author : Murtaza Hakim
|
|
|
|
// include files
|
|
#include "precomp.h"
|
|
#pragma hdrstop
|
|
#include "private.h"
|
|
|
|
// done
|
|
// constructor
|
|
//
|
|
PortDataX::PortDataX( long startPort,
|
|
long endPort,
|
|
Protocol trafficToHandle,
|
|
bool equal,
|
|
long load,
|
|
Affinity affinity,
|
|
long priority)
|
|
: _startPort( startPort ),
|
|
_endPort( endPort ),
|
|
_trafficToHandle( trafficToHandle ),
|
|
_isEqualLoadBalanced( equal ),
|
|
_affinity( affinity ),
|
|
_priority( priority ),
|
|
_key( startPort )
|
|
{}
|
|
|
|
|
|
// done
|
|
// default constructor
|
|
//
|
|
PortDataX::PortDataX()
|
|
:_startPort( 0 ),
|
|
_endPort( 65535 ),
|
|
_trafficToHandle( both ),
|
|
_key( 0 )
|
|
{}
|
|
|
|
|
|
// done
|
|
// equality operator
|
|
bool
|
|
PortDataX::operator==(const PortDataX& objToCompare ) const
|
|
{
|
|
if( (_startPort == objToCompare._startPort )
|
|
&&
|
|
(_endPort == objToCompare._endPort )
|
|
&&
|
|
(_trafficToHandle == objToCompare._trafficToHandle )
|
|
)
|
|
{
|
|
return true;
|
|
}
|
|
else
|
|
{
|
|
return false;
|
|
}
|
|
}
|
|
|
|
// done
|
|
// inequality operator
|
|
bool
|
|
PortDataX::operator!=(const PortDataX& objToCompare ) const
|
|
{
|
|
return !( *this == objToCompare );
|
|
}
|
|
|
|
|
|
|
|
|
|
set<long>
|
|
PortDataX::getAvailablePriorities()
|
|
{
|
|
set<long> availablePriorities;
|
|
|
|
// initially make all available.
|
|
for( int i = 1; i <= WLBS_MAX_HOSTS; ++i )
|
|
{
|
|
availablePriorities.insert( i );
|
|
}
|
|
|
|
// remove priorities not available.
|
|
map<_bstr_t, long>::iterator top;
|
|
for( top = machineMapToPriority.begin();
|
|
top != machineMapToPriority.end();
|
|
++top )
|
|
{
|
|
availablePriorities.erase( (*top).second );
|
|
}
|
|
|
|
return availablePriorities;
|
|
}
|
|
|
|
|
|
|
|
// getAvailableHostIDS
|
|
//
|
|
set<int>
|
|
ClusterData::getAvailableHostIDS()
|
|
{
|
|
set<int> availableHostIDS;
|
|
|
|
// initially make all available.
|
|
for( int i = 1; i <= WLBS_MAX_HOSTS; ++i )
|
|
{
|
|
availableHostIDS.insert( i );
|
|
}
|
|
|
|
// remove host ids not available.
|
|
map<_bstr_t, HostData>::iterator top;
|
|
for( top = hosts.begin(); top != hosts.end(); ++top )
|
|
{
|
|
availableHostIDS.erase( (*top).second.hp.hID );
|
|
}
|
|
|
|
return availableHostIDS;
|
|
}
|