158 lines
4 KiB
C++
158 lines
4 KiB
C++
|
/**********************************************************************/
|
||
|
/** Microsoft Windows/NT **/
|
||
|
/** Copyright(c) Microsoft Corporation, 1997 - 1999 **/
|
||
|
/**********************************************************************/
|
||
|
|
||
|
/*
|
||
|
ipstats.cpp
|
||
|
IP Statistics implementation.
|
||
|
|
||
|
FILE HISTORY:
|
||
|
|
||
|
*/
|
||
|
|
||
|
#include "stdafx.h"
|
||
|
#include "rtrutil.h" // smart MPR handle pointers
|
||
|
#include "format.h" // FormatNumber function
|
||
|
#include "column.h" // containercolumninfo
|
||
|
#include "ipxconn.h" // IPXConnection
|
||
|
#include "routprot.h"
|
||
|
#include "ipxutil.h"
|
||
|
|
||
|
#include "statsdlg.h"
|
||
|
#include "sapstats.h"
|
||
|
#include "resource.h"
|
||
|
|
||
|
|
||
|
/*---------------------------------------------------------------------------
|
||
|
SAPParamsStatistics implementation
|
||
|
---------------------------------------------------------------------------*/
|
||
|
|
||
|
|
||
|
extern const ContainerColumnInfo s_rgSAPParamsStatsColumnInfo[];
|
||
|
const ContainerColumnInfo s_rgSAPParamsStatsColumnInfo[] =
|
||
|
{
|
||
|
{ IDS_STATS_SAPPARAMS_OPER_STATE, 0, TRUE, COL_STATUS },
|
||
|
{ IDS_STATS_SAPPARAMS_SENT_PACKETS, 0, TRUE, COL_LARGE_NUM },
|
||
|
{ IDS_STATS_SAPPARAMS_RCVD_PACKETS, 0, TRUE, COL_LARGE_NUM },
|
||
|
};
|
||
|
|
||
|
SAPParamsStatistics::SAPParamsStatistics()
|
||
|
: IPXStatisticsDialog(STATSDLG_VERTICAL |
|
||
|
STATSDLG_FULLWINDOW |
|
||
|
STATSDLG_CONTEXTMENU |
|
||
|
STATSDLG_SELECT_COLUMNS)
|
||
|
{
|
||
|
SetColumnInfo(s_rgSAPParamsStatsColumnInfo,
|
||
|
DimensionOf(s_rgSAPParamsStatsColumnInfo));
|
||
|
}
|
||
|
|
||
|
|
||
|
HRESULT SAPParamsStatistics::RefreshData(BOOL fGrabNewData)
|
||
|
{
|
||
|
HRESULT hr = hrOK;
|
||
|
CString st;
|
||
|
ULONG iPos;
|
||
|
TCHAR szNumber[32];
|
||
|
SAP_MIB_GET_INPUT_DATA MibGetInputData;
|
||
|
PSAP_MIB_BASE pSapBase = NULL;
|
||
|
DWORD cbSapBase;
|
||
|
SPMprMibBuffer spMib;
|
||
|
PSAP_INTERFACE pSapIf = NULL;
|
||
|
DWORD cbSapIf;
|
||
|
DWORD cSent = 0;
|
||
|
DWORD cRcvd = 0;
|
||
|
DWORD dwErr;
|
||
|
|
||
|
Assert(m_pIPXConn);
|
||
|
|
||
|
MibGetInputData.TableId = SAP_BASE_ENTRY;
|
||
|
|
||
|
dwErr = ::MprAdminMIBEntryGet(m_pIPXConn->GetMibHandle(),
|
||
|
PID_IPX,
|
||
|
IPX_PROTOCOL_SAP,
|
||
|
&MibGetInputData,
|
||
|
sizeof(MibGetInputData),
|
||
|
(LPVOID *) &pSapBase,
|
||
|
&cbSapBase);
|
||
|
spMib = (LPBYTE) pSapBase;
|
||
|
hr = HRESULT_FROM_WIN32(dwErr);
|
||
|
CORg( hr );
|
||
|
|
||
|
if (IsSubitemVisible(MVR_SAPPARAMS_OPER_STATE))
|
||
|
{
|
||
|
st = IpxOperStateToCString(pSapBase->SapOperState);
|
||
|
iPos = MapSubitemToColumn(MVR_SAPPARAMS_OPER_STATE);
|
||
|
m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) st);
|
||
|
}
|
||
|
|
||
|
spMib.Free();
|
||
|
MibGetInputData.TableId = SAP_INTERFACE_TABLE;
|
||
|
|
||
|
dwErr = MprAdminMIBEntryGetFirst(m_pIPXConn->GetMibHandle(),
|
||
|
PID_IPX,
|
||
|
IPX_PROTOCOL_SAP,
|
||
|
&MibGetInputData,
|
||
|
sizeof(MibGetInputData),
|
||
|
(LPVOID *) &pSapIf,
|
||
|
&cbSapIf);
|
||
|
hr = HRESULT_FROM_WIN32(dwErr);
|
||
|
spMib = (LPBYTE) pSapIf;
|
||
|
|
||
|
while (FHrSucceeded(hr))
|
||
|
{
|
||
|
if (pSapIf->InterfaceIndex)
|
||
|
{
|
||
|
cSent += pSapIf->SapIfStats.SapIfOutputPackets;
|
||
|
cRcvd += pSapIf->SapIfStats.SapIfInputPackets;
|
||
|
}
|
||
|
|
||
|
MibGetInputData.InterfaceIndex = pSapIf->InterfaceIndex;
|
||
|
spMib.Free();
|
||
|
pSapIf = NULL;
|
||
|
|
||
|
dwErr = MprAdminMIBEntryGetNext(m_pIPXConn->GetMibHandle(),
|
||
|
PID_IPX,
|
||
|
IPX_PROTOCOL_SAP,
|
||
|
&MibGetInputData,
|
||
|
sizeof(MibGetInputData),
|
||
|
(LPVOID *) &pSapIf,
|
||
|
&cbSapIf);
|
||
|
hr = HRESULT_FROM_WIN32(dwErr);
|
||
|
spMib = (LPBYTE) pSapIf;
|
||
|
}
|
||
|
|
||
|
|
||
|
if (IsSubitemVisible(MVR_SAPPARAMS_SENT_PKTS))
|
||
|
{
|
||
|
FormatNumber(cSent, szNumber, DimensionOf(szNumber), FALSE);
|
||
|
iPos = MapSubitemToColumn(MVR_SAPPARAMS_SENT_PKTS);
|
||
|
m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber);
|
||
|
}
|
||
|
|
||
|
|
||
|
if (IsSubitemVisible(MVR_SAPPARAMS_RCVD_PKTS))
|
||
|
{
|
||
|
FormatNumber(cRcvd, szNumber, DimensionOf(szNumber), FALSE);
|
||
|
iPos = MapSubitemToColumn(MVR_SAPPARAMS_RCVD_PKTS);
|
||
|
m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber);
|
||
|
}
|
||
|
|
||
|
Error:
|
||
|
return hr;
|
||
|
}
|
||
|
|
||
|
BOOL SAPParamsStatistics::OnInitDialog()
|
||
|
{
|
||
|
AFX_MANAGE_STATE(AfxGetStaticModuleState());
|
||
|
CString st;
|
||
|
|
||
|
st.LoadString(IDS_STATS_SAPPARAMS_TITLE);
|
||
|
SetWindowText((LPCTSTR) st);
|
||
|
return IPXStatisticsDialog::OnInitDialog();
|
||
|
}
|
||
|
|
||
|
void SAPParamsStatistics::Sort(UINT)
|
||
|
{
|
||
|
}
|