|
|
/**********************************************************************/ /** 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 "ripstats.h"
#include "resource.h"
/*---------------------------------------------------------------------------
RIPParamsStatistics implementation ---------------------------------------------------------------------------*/
extern const ContainerColumnInfo s_rgRIPParamsStatsColumnInfo[]; const ContainerColumnInfo s_rgRIPParamsStatsColumnInfo[] = { { IDS_STATS_RIPPARAMS_OPER_STATE, 0, TRUE, COL_STATUS }, { IDS_STATS_RIPPARAMS_SENT_PACKETS, 0, TRUE, COL_LARGE_NUM }, { IDS_STATS_RIPPARAMS_RCVD_PACKETS, 0, TRUE, COL_LARGE_NUM }, };
RIPParamsStatistics::RIPParamsStatistics() : IPXStatisticsDialog(STATSDLG_VERTICAL | STATSDLG_FULLWINDOW | STATSDLG_CONTEXTMENU | STATSDLG_SELECT_COLUMNS) { SetColumnInfo(s_rgRIPParamsStatsColumnInfo, DimensionOf(s_rgRIPParamsStatsColumnInfo)); }
HRESULT RIPParamsStatistics::RefreshData(BOOL fGrabNewData) { HRESULT hr = hrOK; CString st; ULONG iPos; TCHAR szNumber[32]; RIP_MIB_GET_INPUT_DATA MibGetInputData; PRIPMIB_BASE pRipBase = NULL; DWORD cbRipBase; SPMprMibBuffer spMib; PRIP_INTERFACE pRipIf = NULL; DWORD cbRipIf; DWORD cSent = 0; DWORD cRcvd = 0; DWORD dwErr;
Assert(m_pIPXConn);
MibGetInputData.TableId = RIP_BASE_ENTRY;
dwErr = ::MprAdminMIBEntryGet(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipBase, &cbRipBase); spMib = (LPBYTE) pRipBase; hr = HRESULT_FROM_WIN32(dwErr); CORg( hr );
if (IsSubitemVisible(MVR_RIPPARAMS_OPER_STATE)) { st = IpxOperStateToCString(pRipBase->RIPOperState); iPos = MapSubitemToColumn(MVR_RIPPARAMS_OPER_STATE); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) st); }
spMib.Free(); MibGetInputData.TableId = RIP_INTERFACE_TABLE;
dwErr = MprAdminMIBEntryGetFirst(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipIf, &cbRipIf); hr = HRESULT_FROM_WIN32(dwErr); spMib = (LPBYTE) pRipIf;
while (FHrSucceeded(hr)) { if (pRipIf->InterfaceIndex) { cSent += pRipIf->RipIfStats.RipIfOutputPackets; cRcvd += pRipIf->RipIfStats.RipIfInputPackets; } MibGetInputData.InterfaceIndex = pRipIf->InterfaceIndex; spMib.Free(); pRipIf = NULL;
dwErr = MprAdminMIBEntryGetNext(m_pIPXConn->GetMibHandle(), PID_IPX, IPX_PROTOCOL_RIP, &MibGetInputData, sizeof(MibGetInputData), (LPVOID *) &pRipIf, &cbRipIf); hr = HRESULT_FROM_WIN32(dwErr); spMib = (LPBYTE) pRipIf; }
if (IsSubitemVisible(MVR_RIPPARAMS_SENT_PKTS)) { FormatNumber(cSent, szNumber, DimensionOf(szNumber), FALSE); iPos = MapSubitemToColumn(MVR_RIPPARAMS_SENT_PKTS); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber); }
if (IsSubitemVisible(MVR_RIPPARAMS_RCVD_PKTS)) { FormatNumber(cRcvd, szNumber, DimensionOf(szNumber), FALSE); iPos = MapSubitemToColumn(MVR_RIPPARAMS_RCVD_PKTS); m_listCtrl.SetItemText(iPos, 1, (LPCTSTR) szNumber); }
Error: return hr; }
BOOL RIPParamsStatistics::OnInitDialog() { AFX_MANAGE_STATE(AfxGetStaticModuleState()); CString st;
st.LoadString(IDS_STATS_RIPPARAMS_TITLE); SetWindowText((LPCTSTR) st); return IPXStatisticsDialog::OnInitDialog(); }
void RIPParamsStatistics::Sort(UINT) { }
|