/*++ Copyright (C) Microsoft Corporation, 1997 - 1999 Module Name: cpubfilt.hxx Abstract: Header file containing SENS's IPublisherFilter definition. Author: Gopal Parupudi [Notes:] optional-notes Revision History: GopalP 1/26/1998 Start. --*/ #ifndef __CPUBFILT_HXX__ #define __CPUBFILT_HXX__ // // Constants // #define CONNECTION_MADE_METHOD L"ConnectionMade" #define CONNECTION_MADE_NOQOC_METHOD L"ConnectionMadeNoQOCInfo" #define CONNECTION_LOST_METHOD L"ConnectionLost" #define DESTINATION_REACHABLE_METHOD L"DestinationReachable" #define DESTINATION_REACHABLE_NOQOC_METHOD L"DestinationReachableNoQOCInfo" #define PROPERTY_CONNECTION_MADE_TYPE L"ulConnectionMadeType" #define PROPERTY_CONNECTION_MADE_NOQOC_TYPE L"ulConnectionMadeTypeNoQOC" #define PROPERTY_CONNECTION_LOST_TYPE L"ulConnectionLostType" #define PROPERTY_DESTINATION L"bstrDestination" #define PROPERTY_DESTINATION_TYPE L"ulDestinationType" #define PROPERTY_DESTINATION_NOQOC L"bstrDestinationNoQOC" #define PROPERTY_DESTINATION_NOQOC_TYPE L"ulDestinationTypeNoQOC" class CImpISensNetworkFilter : public ISensNetwork, public IPublisherFilter { public: CImpISensNetworkFilter(void); ~CImpISensNetworkFilter(void); // // IUnknown // STDMETHOD (QueryInterface) (REFIID, LPVOID *); STDMETHOD_(ULONG, AddRef) (void); STDMETHOD_(ULONG, Release) (void); // // IDispatch // STDMETHOD (GetTypeInfoCount) (UINT *); STDMETHOD (GetTypeInfo) (UINT, LCID, ITypeInfo **); STDMETHOD (GetIDsOfNames) (REFIID, LPOLESTR *, UINT, LCID, DISPID *); STDMETHOD (Invoke) (DISPID, REFIID, LCID, WORD, DISPPARAMS *, VARIANT *, EXCEPINFO *, UINT *); // // ISensNetwork // STDMETHOD (ConnectionMade) (BSTR, ULONG, LPSENS_QOCINFO); STDMETHOD (ConnectionMadeNoQOCInfo) (BSTR, ULONG); STDMETHOD (ConnectionLost) (BSTR, ULONG); STDMETHOD (DestinationReachable) (BSTR, BSTR, ULONG, LPSENS_QOCINFO); STDMETHOD (DestinationReachableNoQOCInfo) (BSTR, BSTR, ULONG); // // IPublisherFilter // STDMETHOD (Initialize) (BSTR, IDispatch*); STDMETHOD (PrepareToFire) (BSTR, IFiringControl*); private: LONG m_cRef; // // One collection per event/method. // IEnumEventObject* m_pConnectionMade_Enum; IEnumEventObject* m_pConnectionMadeNoQOC_Enum; IEnumEventObject* m_pConnectionLost_Enum; IEnumEventObject* m_pDestinationReachable_Enum; IEnumEventObject* m_pDestinationReachableNoQOC_Enum; IFiringControl* m_pConnectionMade_FiringControl; IFiringControl* m_pConnectionMadeNoQOC_FiringControl; IFiringControl* m_pConnectionLost_FiringControl; IFiringControl* m_pDestinationReachable_FiringControl; IFiringControl* m_pDestinationReachableNoQOC_FiringControl; }; typedef CImpISensNetworkFilter FAR * LPCIMPISENSNETWORKFILTER; // // Classes relating to Publisher Filters // // Abstract base Filter class class __declspec(novtable) Filter { public: virtual HRESULT CheckMatch(IEventSubscription*) const = 0; }; // Connection Filter class ConnectionFilter : public Filter { public: ConnectionFilter( const wchar_t* connectionTypeProperty, ULONG connectionType, HRESULT& hr ); ~ConnectionFilter(); virtual HRESULT CheckMatch(IEventSubscription*) const; private: BSTR m_connectionTypeProperty; ULONG m_connectionType; }; // Destination Reachability Filter class ReachabilityFilter : public Filter { public: ReachabilityFilter( const wchar_t* destinationProperty, const wchar_t* destinationTypeProperty, BSTR destination, ULONG destinationType, HRESULT& hr ); ~ReachabilityFilter(); virtual HRESULT CheckMatch(IEventSubscription*) const; private: BSTR m_destinationProperty; BSTR m_destinationTypeProperty; BSTR m_destination; ULONG m_destinationType; }; // // Forward definitions // HRESULT FilterAndFire( const Filter& filter, IEnumEventObject* enumerator, IFiringControl* firingControl ); #endif // __CPUBFILT_HXX__