288 lines
7 KiB
C++
288 lines
7 KiB
C++
|
//+-------------------------------------------------------------------------
|
||
|
//
|
||
|
// Microsoft Windows
|
||
|
//
|
||
|
// Copyright (C) Microsoft Corporation, 1997 - 1999
|
||
|
//
|
||
|
// File: pglimit.cpp
|
||
|
//
|
||
|
//--------------------------------------------------------------------------
|
||
|
|
||
|
// pglimit.cpp : implementation file
|
||
|
//
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "acsadmin.h"
|
||
|
#include "acsdata.h"
|
||
|
#include "pggen.h"
|
||
|
#include "pglimit.h"
|
||
|
|
||
|
#ifdef _DEBUG
|
||
|
#define new DEBUG_NEW
|
||
|
#undef THIS_FILE
|
||
|
static char THIS_FILE[] = __FILE__;
|
||
|
#endif
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CPgSubLimit property page
|
||
|
|
||
|
IMPLEMENT_DYNCREATE(CPgSubLimit, CACSDialog)
|
||
|
|
||
|
CPgSubLimit::CPgSubLimit(CServiceLevelLimitsRecord* pRecord, int *pAvailTypes, CWnd* pParent) : CACSDialog(CPgSubLimit::IDD, pParent)
|
||
|
{
|
||
|
ASSERT(pRecord != NULL && pAvailTypes != NULL);
|
||
|
m_pAvailTypes = pAvailTypes;
|
||
|
m_pLimitsRecord = pRecord;
|
||
|
DataInit();
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::DataInit()
|
||
|
{
|
||
|
//{{AFX_DATA_INIT(CPgSubLimit)
|
||
|
|
||
|
// unlimit is the default choice
|
||
|
m_nDataRateChoice = 0;
|
||
|
m_nPeakRateChoice = 0;
|
||
|
m_nTTDataRateChoice = 0;
|
||
|
m_nTTPeakDataRateChoice = 0;
|
||
|
|
||
|
|
||
|
m_uDataRate = 0;
|
||
|
m_uPeakRate = 0;
|
||
|
m_uTTDataRate = 0;
|
||
|
m_uTTPeakRate = 0;
|
||
|
m_bFlowDataChanged = FALSE;
|
||
|
m_nServiceType = -1;
|
||
|
//}}AFX_DATA_INIT
|
||
|
}
|
||
|
|
||
|
CPgSubLimit::CPgSubLimit() : CACSDialog(CPgSubLimit::IDD, NULL)
|
||
|
{
|
||
|
DataInit();
|
||
|
}
|
||
|
|
||
|
CPgSubLimit::~CPgSubLimit()
|
||
|
{
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::DoDataExchange(CDataExchange* pDX)
|
||
|
{
|
||
|
CACSDialog::DoDataExchange(pDX);
|
||
|
//{{AFX_DATA_MAP(CPgSubLimit)
|
||
|
DDX_Control(pDX, IDC_COMBO_SUBNET_LIMIT_TYPES, m_comboTypes);
|
||
|
DDX_Control(pDX, IDC_EDIT_GEN_TT_PEAKRATE, m_editTTPeakRate);
|
||
|
DDX_Control(pDX, IDC_EDIT_GEN_TT_DATARATE, m_editTTDataRate);
|
||
|
DDX_Control(pDX, IDC_EDIT_GEN_PF_PEAKRATE, m_editPeakRate);
|
||
|
DDX_Control(pDX, IDC_EDIT_GEN_PF_DATARATE, m_editDataRate);
|
||
|
DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_DATARATE_UNLIMITED, m_nDataRateChoice);
|
||
|
DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_PEAKRATE_UNLIMITED, m_nPeakRateChoice);
|
||
|
DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_TTDATARATE_UNLIMITED, m_nTTDataRateChoice);
|
||
|
DDX_Radio(pDX, IDC_SUBNET_TRAFFIC_TTPEAKRATE_UNLIMITED, m_nTTPeakDataRateChoice);
|
||
|
//}}AFX_DATA_MAP
|
||
|
DDX_Text(pDX, IDC_EDIT_GEN_PF_DATARATE, m_uDataRate);
|
||
|
if(m_nDataRateChoice == 1)
|
||
|
DDV_MinMaxUInt(pDX, m_uDataRate, 0, 4194300);
|
||
|
|
||
|
DDX_Text(pDX, IDC_EDIT_GEN_PF_PEAKRATE, m_uPeakRate);
|
||
|
if(m_nPeakRateChoice == 1)
|
||
|
DDV_MinMaxUInt(pDX, m_uPeakRate, 0, 4194300);
|
||
|
|
||
|
DDX_Text(pDX, IDC_EDIT_GEN_TT_DATARATE, m_uTTDataRate);
|
||
|
if(m_nTTDataRateChoice == 1)
|
||
|
DDV_MinMaxUInt(pDX, m_uTTDataRate, 0, 4194300);
|
||
|
|
||
|
|
||
|
DDX_Text(pDX, IDC_EDIT_GEN_TT_PEAKRATE, m_uTTPeakRate);
|
||
|
if(m_nTTPeakDataRateChoice == 1)
|
||
|
DDV_MinMaxUInt(pDX, m_uTTPeakRate, 0, 4194300);
|
||
|
}
|
||
|
|
||
|
|
||
|
BEGIN_MESSAGE_MAP(CPgSubLimit, CACSDialog)
|
||
|
//{{AFX_MSG_MAP(CPgSubLimit)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_DATARATE_LIMITED, OnSubnetTrafficDatarateLimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_DATARATE_UNLIMITED, OnSubnetTrafficDatarateUnlimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_PEAKRATE_LIMITED, OnSubnetTrafficPeakrateLimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_PEAKRATE_UNLIMITED, OnSubnetTrafficPeakrateUnlimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTDATARATE_LIMITED, OnSubnetTrafficTtdatarateLimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTDATARATE_UNLIMITED, OnSubnetTrafficTtdatarateUnlimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTPEAKRATE_LIMITED, OnSubnetTrafficTtpeakrateLimited)
|
||
|
ON_BN_CLICKED(IDC_SUBNET_TRAFFIC_TTPEAKRATE_UNLIMITED, OnSubnetTrafficTtpeakrateUnlimited)
|
||
|
//}}AFX_MSG_MAP
|
||
|
END_MESSAGE_MAP()
|
||
|
|
||
|
/////////////////////////////////////////////////////////////////////////////
|
||
|
// CPgSubLimit message handlers
|
||
|
|
||
|
BOOL CPgSubLimit::OnInitDialog()
|
||
|
{
|
||
|
|
||
|
CACSDialog::OnInitDialog();
|
||
|
|
||
|
|
||
|
// populate the strings in combo box
|
||
|
int* pTypes = m_pAvailTypes;
|
||
|
CString str;
|
||
|
UINT strId = 0;
|
||
|
|
||
|
if(!pTypes) return FALSE;
|
||
|
|
||
|
while (*pTypes != -1)
|
||
|
{
|
||
|
switch(*pTypes)
|
||
|
{
|
||
|
case ACS_SUBNET_LIMITS_SERVICETYPE_AGGREGATE:
|
||
|
strId = IDS_AGGREGATEPOLICY;
|
||
|
break;
|
||
|
case ACS_SUBNET_LIMITS_SERVICETYPE_GUARANTEEDSERVICE:
|
||
|
strId = IDS_GUARANTEEDSERVICE;
|
||
|
break;
|
||
|
case ACS_SUBNET_LIMITS_SERVICETYPE_CONTROLLEDLOAD:
|
||
|
strId = IDS_CONTROLLEDLOAD;
|
||
|
break;
|
||
|
}
|
||
|
|
||
|
str.LoadString(strId);
|
||
|
|
||
|
int index = m_comboTypes.AddString(str);
|
||
|
|
||
|
if(index != -1)
|
||
|
m_comboTypes.SetItemData(index, *pTypes);
|
||
|
|
||
|
pTypes++;
|
||
|
}
|
||
|
|
||
|
m_comboTypes.SetCurSel(0);
|
||
|
|
||
|
EnableEverything();
|
||
|
|
||
|
// TODO: Add extra initialization here
|
||
|
return TRUE; // return TRUE unless you set the focus to a control
|
||
|
// EXCEPTION: OCX Property Pages should return FALSE
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficDatarateLimited()
|
||
|
{
|
||
|
m_editDataRate.EnableWindow(TRUE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficDatarateUnlimited()
|
||
|
{
|
||
|
m_editDataRate.EnableWindow(FALSE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficPeakrateLimited()
|
||
|
{
|
||
|
m_editPeakRate.EnableWindow(TRUE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficPeakrateUnlimited()
|
||
|
{
|
||
|
m_editPeakRate.EnableWindow(FALSE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficTtdatarateLimited()
|
||
|
{
|
||
|
m_editTTDataRate.EnableWindow(TRUE);
|
||
|
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficTtdatarateUnlimited()
|
||
|
{
|
||
|
m_editTTDataRate.EnableWindow(FALSE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficTtpeakrateLimited()
|
||
|
{
|
||
|
m_editTTPeakRate.EnableWindow(TRUE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::OnSubnetTrafficTtpeakrateUnlimited()
|
||
|
{
|
||
|
m_editTTPeakRate.EnableWindow(FALSE);
|
||
|
m_bFlowDataChanged = TRUE;
|
||
|
}
|
||
|
|
||
|
void CPgSubLimit::EnableEverything()
|
||
|
{
|
||
|
UpdateData();
|
||
|
|
||
|
m_editDataRate.EnableWindow(m_nDataRateChoice);
|
||
|
m_editPeakRate.EnableWindow(m_nPeakRateChoice);
|
||
|
m_editTTDataRate.EnableWindow(m_nTTDataRateChoice);
|
||
|
m_editTTPeakRate.EnableWindow(m_nTTPeakDataRateChoice);
|
||
|
|
||
|
if(m_nServiceType != -1) // being edited
|
||
|
m_comboTypes.EnableWindow(FALSE);
|
||
|
|
||
|
}
|
||
|
void CPgSubLimit::OnOK()
|
||
|
{
|
||
|
// TODO: Add extra validation here
|
||
|
UINT cId = 0;
|
||
|
UINT mId = 0;
|
||
|
|
||
|
if(m_nDataRateChoice && m_nPeakRateChoice && m_uDataRate > m_uPeakRate)
|
||
|
{
|
||
|
cId = IDC_EDIT_GEN_PF_PEAKRATE;
|
||
|
mId = IDS_ERR_PEAKRATE_LESS_RATE;
|
||
|
}
|
||
|
|
||
|
if(!cId && m_nTTDataRateChoice && m_nDataRateChoice && m_uDataRate > m_uTTDataRate)
|
||
|
{
|
||
|
cId = IDC_EDIT_GEN_TT_DATARATE;
|
||
|
mId = IDS_ERR_TOTALRATE_LESS_RATE;
|
||
|
}
|
||
|
|
||
|
#if 0 // 367760 1 a-leeb ACS: Snap-in performin incorrect boundary checking
|
||
|
|
||
|
if(!cId && m_nTTDataRateChoice && m_nPeakRateChoice && m_uPeakRate > m_uTTDataRate)
|
||
|
{
|
||
|
cId = IDC_EDIT_GEN_TT_DATARATE;
|
||
|
mId = IDS_ERR_TOTALRATE_LESS_PEAKRATE;
|
||
|
}
|
||
|
#endif
|
||
|
|
||
|
if(!cId && m_nTTPeakDataRateChoice && m_nPeakRateChoice && m_uPeakRate > m_uTTPeakRate)
|
||
|
{
|
||
|
cId = IDC_EDIT_GEN_TT_PEAKRATE;
|
||
|
mId = IDS_ERR_TOTALPEAK_LESS_PEAK;
|
||
|
}
|
||
|
|
||
|
if(!cId && m_nTTDataRateChoice && m_nTTPeakDataRateChoice && m_uTTDataRate > m_uTTPeakRate)
|
||
|
{
|
||
|
cId = IDC_EDIT_GEN_TT_PEAKRATE;
|
||
|
mId = IDS_ERR_TOTALPEAK_LESS_TOTALRATE;
|
||
|
}
|
||
|
|
||
|
if(cId)
|
||
|
{
|
||
|
CWnd* pWnd = GetDlgItem(cId);
|
||
|
ASSERT(pWnd);
|
||
|
GotoDlgCtrl( pWnd );
|
||
|
|
||
|
AfxMessageBox(mId);
|
||
|
return ;
|
||
|
}
|
||
|
else
|
||
|
{
|
||
|
int index = m_comboTypes.GetCurSel();
|
||
|
|
||
|
if( index != CB_ERR)
|
||
|
{
|
||
|
m_nServiceType = m_comboTypes.GetItemData(index);
|
||
|
}
|
||
|
|
||
|
CACSDialog::OnOK();
|
||
|
}
|
||
|
}
|