#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; } }