//============================================================================ // Copyright (C) Microsoft Corporation, 1997 - 1999 // // File: summary.h // // History: // 07/22/97 Kenn M. Takara Created. // // IPX interfaces summary view. // //============================================================================ #ifndef _SUMMARY_H #define _SUMMARY_H #ifndef _BASEHAND_H #include "basehand.h" #endif #ifndef _HANDLERS_H #include "handlers.h" #endif #ifndef _XSTREAM_H #include "xstream.h" // need for ColumnData #endif #ifndef _INFO_H #include "info.h" #endif #ifndef _IPXFACE_H #include "ipxface.h" #endif #ifndef _BASECON_H #include "basecon.h" // BaseContainerHandler #endif #ifndef _IPXSTRM_H #include "ipxstrm.h" #endif #ifndef _RTRSHEET_H #include "rtrsheet.h" #endif #ifndef _IPXCONN_H #include "ipxconn.h" // IPXConnection #endif // forward declarations class IPXAdminConfigStream; struct SIPXSummaryNodeMenu; /*--------------------------------------------------------------------------- This is the list of columns available for the IPX Summary interfaces node. - Name, "[1] DEC DE500 ..." - Type, "Dedicated" - Adminstrative status, "Up" - Operational status, "Operational" - Packets sent - Packets received - Out filtered packets - Out dropped packets - In filtered packets - In No-routes packets - In Dropped packets ---------------------------------------------------------------------------*/ // // If you ADD any columns to this enum, Be sure to update // the string ids for the column headers in summary.cpp // enum { IPXSUM_SI_NAME = 0, IPXSUM_SI_TYPE, IPXSUM_SI_ADMINSTATE, IPXSUM_SI_OPERSTATE, IPXSUM_SI_NETWORK, IPXSUM_SI_PACKETS_SENT, IPXSUM_SI_PACKETS_RCVD, IPXSUM_SI_OUT_FILTERED, IPXSUM_SI_OUT_DROPPED, IPXSUM_SI_IN_FILTERED, IPXSUM_SI_IN_NOROUTES, IPXSUM_SI_IN_DROPPED, IPXSUM_MAX_COLUMNS }; /*--------------------------------------------------------------------------- We store a pointer to the IPXConnection object in our node data ---------------------------------------------------------------------------*/ #define GET_IPXSUMMARY_NODEDATA(pNode) \ (IPXConnection *) pNode->GetData(TFS_DATA_USER) #define SET_IPXSUMMARY_NODEDATA(pNode, pData) \ pNode->SetData(TFS_DATA_USER, (LONG_PTR) pData) /*--------------------------------------------------------------------------- Struct: IPXSummaryListEntry ---------------------------------------------------------------------------*/ struct IPXSummaryListEntry { CString m_stId; CString m_stTitle; UCHAR m_network[4]; DWORD m_dwAdminState; DWORD m_dwIfType; DWORD m_dwOperState; DWORD m_dwSent; DWORD m_dwRcvd; DWORD m_dwOutFiltered; DWORD m_dwOutDropped; DWORD m_dwInFiltered; DWORD m_dwInNoRoutes; DWORD m_dwInDropped; }; typedef CList IPXSummaryList; /*--------------------------------------------------------------------------- Class: IPXSummaryHandler ---------------------------------------------------------------------------*/ class IPXSummaryHandler : public BaseContainerHandler { public: IPXSummaryHandler(ITFSComponentData *pTFSCompData); // Override QI to handle embedded interface STDMETHOD(QueryInterface)(REFIID iid, LPVOID *ppv); DeclareEmbeddedInterface(IRtrAdviseSink, IUnknown) // base handler functionality we override OVERRIDE_NodeHandler_GetString(); OVERRIDE_NodeHandler_OnCreateDataObject(); OVERRIDE_NodeHandler_OnAddMenuItems(); OVERRIDE_NodeHandler_OnCommand(); OVERRIDE_NodeHandler_DestroyHandler(); OVERRIDE_BaseHandlerNotify_OnExpand(); OVERRIDE_ResultHandler_AddMenuItems(); OVERRIDE_ResultHandler_Command(); OVERRIDE_ResultHandler_CompareItems(); OVERRIDE_BaseResultHandlerNotify_OnResultShow(); OVERRIDE_BaseResultHandlerNotify_OnResultRefresh(); // Initializes the handler HRESULT Init(IRtrMgrInfo *pRtrMgrInfo, IPXAdminConfigStream *pConfigStream); // Initializes the node HRESULT ConstructNode(ITFSNode *pNode, LPCTSTR szName, IPXConnection *pIPXConn); public: // Structure used to pass data to callbacks - used as a way of // avoiding recomputation struct SMenuData { SPITFSNode m_spNode; }; // Function callbacks for menu enabling/disabling protected: // Refresh the data for these nodes HRESULT SynchronizeNodeData(ITFSNode *pThisNode); HRESULT GetIPXSummaryData(ITFSNode *pThisNode, IPXSummaryList * pIPXSumList); HRESULT GetClientInterfaceData(IPXSummaryListEntry *pClient, IRtrMgrInfo *pRm); // Helper function to add interfaces to the UI HRESULT AddInterfaceNode(ITFSNode *pParent, IInterfaceInfo *pIf, BOOL fClient, ITFSNode **ppNewNode); // Command implementations HRESULT OnNewInterface(); LONG_PTR m_ulConnId; // notification id for router info LONG_PTR m_ulRefreshConnId; // notification id for router refresh LONG_PTR m_ulStatsConnId; // notification for stats refresh MMC_COOKIE m_cookie; // cookie for the node SPIRtrMgrInfo m_spRtrMgrInfo; IPXAdminConfigStream * m_pConfigStream; CString m_stTitle; }; /*--------------------------------------------------------------------------- Class: IPXSummaryInterfaceHandler This is the handler for the interface nodes that appear in the IPXSummary node. ---------------------------------------------------------------------------*/ class IPXSummaryInterfaceHandler : public BaseIPXResultHandler { public: IPXSummaryInterfaceHandler(ITFSComponentData *pCompData); OVERRIDE_NodeHandler_HasPropertyPages(); OVERRIDE_NodeHandler_CreatePropertyPages(); OVERRIDE_NodeHandler_OnCreateDataObject(); OVERRIDE_ResultHandler_AddMenuItems(); OVERRIDE_ResultHandler_Command(); OVERRIDE_ResultHandler_OnCreateDataObject(); OVERRIDE_ResultHandler_DestroyResultHandler(); OVERRIDE_ResultHandler_HasPropertyPages() { return hrOK; }; OVERRIDE_ResultHandler_CreatePropertyPages(); OVERRIDE_BaseResultHandlerNotify_OnResultDelete(); // Initializes the node HRESULT ConstructNode(ITFSNode *pNode, IInterfaceInfo *pIfInfo, IPXConnection *pIPXConn); HRESULT Init(IRtrMgrInfo *pRm, IInterfaceInfo *pInfo, ITFSNode *pParent); // Removes IPX from this interface HRESULT OnRemoveInterface(); // Refresh the data for this node void RefreshInterface(MMC_COOKIE cookie); //sets the IPX enable/disable flag for the interface HRESULT OnEnableDisableIPX(BOOL fEnable, MMC_COOKIE cookie ); void SetInfoBase(SPIInfoBase & spInfoBase ) { m_spInfoBase = spInfoBase.Transfer(); }; private: HRESULT LoadInfoBase( IPXConnection *pIPXConn); HRESULT SaveChanges(); public: // Structure used to pass data to callbacks - used as a way of // avoiding recomputation struct SMenuData { SPITFSNode m_spNode; SPIInterfaceInfo m_spInterfaceInfo; SPIInfoBase m_spInfoBaseCopy; }; static ULONG GetUpdateRoutesFlags(const SRouterNodeMenu *, INT_PTR); static ULONG GetEnableFlags(const SRouterNodeMenu *, INT_PTR); static ULONG GetDisableFlags(const SRouterNodeMenu *, INT_PTR); HRESULT OnUpdateRoutes(MMC_COOKIE cookie); protected: LONG_PTR m_ulConnId; SPIRtrMgrInfo m_spRm; SPIInterfaceInfo m_spInterfaceInfo; SPIInfoBase m_spInfoBase; SPIRtrMgrInterfaceInfo m_spRmIf; BOOL m_bClientInfoBase; IPXConnection * m_pIPXConn; }; #endif _SUMMARY_H