windows-nt/Source/XPSP1/NT/net/wlbs/nlbmgr/exe/hostportspage.cpp
2020-09-26 16:20:57 +08:00

450 lines
13 KiB
C++

#include "stdafx.h"
#include "HostPortsPage.h"
#include "Document.h"
#include "ResourceString.h"
HostPortsPage::HostPortsPage( const _bstr_t& myMachineName,
ClusterData* p_clusterData,
UINT ID)
: CPropertyPage(ID),
m_clusterData( p_clusterData ),
machine( myMachineName )
{}
HostPortsPage:: ~HostPortsPage()
{}
void HostPortsPage::DoDataExchange(CDataExchange* pDX)
{
CPropertyPage::DoDataExchange(pDX);
DDX_Control(pDX, IDC_LIST_PORT_RULE, m_portList);
}
BEGIN_MESSAGE_MAP(HostPortsPage, CPropertyPage)
END_MESSAGE_MAP()
BOOL
HostPortsPage::OnInitDialog()
{
CPropertyPage::OnInitDialog();
m_portList.InsertColumn( 0,
GETRESOURCEIDSTRING( IDS_HEADER_P_START ) ,
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 1,
GETRESOURCEIDSTRING( IDS_HEADER_P_END ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 2,
GETRESOURCEIDSTRING( IDS_HEADER_P_PROTOCOL ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 3,
GETRESOURCEIDSTRING( IDS_HEADER_P_MODE ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 4,
GETRESOURCEIDSTRING( IDS_HEADER_P_PRIORITY ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 5,
GETRESOURCEIDSTRING( IDS_HEADER_P_LOAD ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.InsertColumn( 6,
GETRESOURCEIDSTRING( IDS_HEADER_P_AFFINITY ),
LVCFMT_LEFT,
Document::LV_COLUMN_SMALL );
m_portList.SetExtendedStyle( m_portList.GetExtendedStyle() | LVS_EX_FULLROWSELECT );
SetControlData();
int numItems = m_portList.GetItemCount();
if( numItems > 0 )
{
m_portList.SetItemState( 0, LVIS_SELECTED | LVIS_FOCUSED, LVIS_SELECTED | LVIS_FOCUSED );
}
return TRUE;
}
void
HostPortsPage::SetControlData()
{
int index = 0;
map< long, PortDataELB>::iterator topELB;
for( topELB = m_clusterData->portELB.begin();
topELB != m_clusterData->portELB.end();
++topELB )
{
wchar_t buf[100];
// start port
swprintf( buf, L"%d", (*topELB).second._startPort );
LVITEM item;
item.mask = LVIF_TEXT | LVIF_IMAGE;
item.iItem = index;
item.iSubItem = 0;
item.iImage = 2;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.InsertItem( &item );
// end port
swprintf( buf, L"%d", (*topELB).second._endPort );
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 1;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// protocol
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 2;
switch( (*topELB).second._trafficToHandle )
{
case MNLBPortRule::both :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_BOTH );
break;
case MNLBPortRule::tcp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_TCP );
break;
case MNLBPortRule::udp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_UDP );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
// mode
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 3;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_MODE_MULTIPLE );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// priority
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 4;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// load
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 5;
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_LOAD_EQUAL );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// affinity
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 6;
switch( (*topELB).second._affinity )
{
case MNLBPortRule::none :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_NONE );
break;
case MNLBPortRule::single :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_SINGLE );
break;
case MNLBPortRule::classC :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_CLASSC );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
++index;
}
index = 0;
map< long, PortDataULB>::iterator topULB;
for( topULB = m_clusterData->portULB.begin();
topULB != m_clusterData->portULB.end();
++topULB )
{
wchar_t buf[100];
// start port
swprintf( buf, L"%d", (*topULB).second._startPort );
LVITEM item;
item.mask = LVIF_TEXT | LVIF_IMAGE;
item.iItem = index;
item.iSubItem = 0;
item.iImage = 2;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.InsertItem( &item );
// end port
swprintf( buf, L"%d", (*topULB).second._endPort );
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 1;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// protocol
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 2;
switch( (*topULB).second._trafficToHandle )
{
case MNLBPortRule::both :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_BOTH );
break;
case MNLBPortRule::tcp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_TCP );
break;
case MNLBPortRule::udp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_UDP );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
// mode
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 3;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_MODE_MULTIPLE );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// priority
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 4;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// load
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 5;
swprintf( buf, L"%d", (*topULB).second.machineMapToLoadWeight[machine] );
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// affinity
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 6;
switch( (*topULB).second._affinity )
{
case MNLBPortRule::none :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_NONE );
break;
case MNLBPortRule::single :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_SINGLE );
break;
case MNLBPortRule::classC :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_AFFINITY_CLASSC );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
++index;
}
index = 0;
map< long, PortDataF>::iterator topF;
for( topF = m_clusterData->portF.begin();
topF != m_clusterData->portF.end();
++topF )
{
wchar_t buf[100];
// start port
swprintf( buf, L"%d", (*topF).second._startPort );
LVITEM item;
item.mask = LVIF_TEXT | LVIF_IMAGE;
item.iItem = index;
item.iSubItem = 0;
item.iImage = 2;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.InsertItem( &item );
// end port
swprintf( buf, L"%d", (*topF).second._endPort );
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 1;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// protocol
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 2;
switch( (*topF).second._trafficToHandle )
{
case MNLBPortRule::both :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_BOTH );
break;
case MNLBPortRule::tcp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_TCP );
break;
case MNLBPortRule::udp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_UDP );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
// mode
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 3;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_MODE_SINGLE );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// priority
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 4;
swprintf( buf, L"%d", (*topF).second.machineMapToPriority[machine] );
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// load
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 5;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// affinity
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 6;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
++index;
}
index = 0;
map< long, PortDataD>::iterator topD;
for( topD = m_clusterData->portD.begin();
topD != m_clusterData->portD.end();
++topD )
{
wchar_t buf[100];
// start port
swprintf( buf, L"%d", (*topD).second._startPort );
LVITEM item;
item.mask = LVIF_TEXT | LVIF_IMAGE;
item.iItem = index;
item.iSubItem = 0;
item.iImage = 2;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.InsertItem( &item );
// end port
swprintf( buf, L"%d", (*topD).second._endPort );
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 1;
item.pszText = buf;
item.cchTextMax = 100;
m_portList.SetItem( &item );
// protocol
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 2;
switch( (*topD).second._trafficToHandle )
{
case MNLBPortRule::both :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_BOTH );
break;
case MNLBPortRule::tcp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_TCP );
break;
case MNLBPortRule::udp :
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_PROTOCOL_UDP );
break;
}
item.cchTextMax = 100;
m_portList.SetItem( &item );
// mode
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 3;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_MODE_DISABLED );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// priority
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 4;
item.pszText = GETRESOURCEIDSTRING(IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// load
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 5;
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
// affinity
item.mask = LVIF_TEXT;
item.iItem = index;
item.iSubItem = 6;
item.pszText = GETRESOURCEIDSTRING( IDS_REPORT_EMPTY );
item.cchTextMax = 100;
m_portList.SetItem( &item );
++index;
}
}