450 lines
13 KiB
C++
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;
|
||
|
}
|
||
|
}
|