// feeds.h : Declaration of the CNntpAdminFeeds ///////////////////////////////////////////////////////////////////////////// // Dependencies: #include "feedinfo.h" ///////////////////////////////////////////////////////////////////////////// // CNntpOneWayFeed: class CNntpOneWayFeed: public CComDualImpl, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass { friend class CFeed; public: CNntpOneWayFeed(); virtual ~CNntpOneWayFeed (); BEGIN_COM_MAP(CNntpOneWayFeed) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(INntpOneWayFeed) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() //DECLARE_NOT_AGGREGATABLE(CNntpOneWayFeed) // Remove the comment from the line above if you don't want your object to // support aggregation. The default is to support it DECLARE_REGISTRY(CNntpOneWayFeed, _T("Nntpadm.OneWayFeed.1"), _T("Nntpadm.OneWayFeed"), IDS_NNTPONEWAYFEED_DESC, THREADFLAGS_BOTH) // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // INntpOneWayFeed public: STDMETHODIMP get_FeedId ( long * plFeedId ); STDMETHODIMP get_RemoteServer ( BSTR * pstrRemoteServer ); STDMETHODIMP get_FeedAction ( NNTP_FEED_ACTION * pfeedaction ); STDMETHODIMP put_FeedAction ( NNTP_FEED_ACTION feedaction ); STDMETHODIMP get_UucpName ( BSTR * pstrUucpName ); STDMETHODIMP put_UucpName ( BSTR strUucpName ); STDMETHODIMP get_PullNewsDate ( DATE * pdatePullNews ); STDMETHODIMP put_PullNewsDate ( DATE datePullNews ); STDMETHODIMP get_FeedInterval ( long * plFeedInterval ); STDMETHODIMP put_FeedInterval ( long lFeedInterval ); STDMETHODIMP get_AutoCreate ( BOOL * pfAutoCreate ); STDMETHODIMP put_AutoCreate ( BOOL fAutoCreate ); STDMETHODIMP get_Enabled ( BOOL * pfEnabled ); STDMETHODIMP put_Enabled ( BOOL fEnabled ); STDMETHODIMP get_MaxConnectionAttempts ( long * plMaxConnectionAttempts ); STDMETHODIMP put_MaxConnectionAttempts ( long lMaxConnectionAttempts ); STDMETHODIMP get_SecurityType ( long * plSecurityType ); STDMETHODIMP put_SecurityType ( long lSecurityType ); STDMETHODIMP get_AuthenticationType ( long * plAuthenticationType ); STDMETHODIMP put_AuthenticationType ( long lAuthenticationType ); STDMETHODIMP get_AccountName ( BSTR * pstrAccountName ); STDMETHODIMP put_AccountName ( BSTR strAccountName ); STDMETHODIMP get_Password ( BSTR * pstrPassword ); STDMETHODIMP put_Password ( BSTR strPassword ); STDMETHODIMP get_AllowControlMessages ( BOOL * pfAllowControlMessages ); STDMETHODIMP put_AllowControlMessages ( BOOL fAllowControlMessages ); STDMETHODIMP get_OutgoingPort ( long * plOutgoingPort ); STDMETHODIMP put_OutgoingPort ( long lOutgoingPort ); STDMETHODIMP get_Newsgroups ( SAFEARRAY ** ppsastrNewsgroups ); STDMETHODIMP put_Newsgroups ( SAFEARRAY * psastrNewsgroups ); STDMETHODIMP get_NewsgroupsVariant ( SAFEARRAY ** ppsastrNewsgroups ); STDMETHODIMP put_NewsgroupsVariant ( SAFEARRAY * psastrNewsgroups ); STDMETHODIMP get_Distributions ( SAFEARRAY ** ppsastrDistributions ); STDMETHODIMP put_Distributions ( SAFEARRAY * psastrDistributions ); STDMETHODIMP get_TempDirectory ( BSTR * pstrTempDirectory ); STDMETHODIMP put_TempDirectory ( BSTR strTempDirectory ); STDMETHODIMP Default ( ); private: // // Each one-way feed corresponds to an NNTP_FEED_INFO struct. // CFeed m_feed; }; ///////////////////////////////////////////////////////////////////////////// // CNntpFeed: class CNntpFeed: public CComDualImpl, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass { friend class CFeedPair; public: CNntpFeed(); virtual ~CNntpFeed (); BEGIN_COM_MAP(CNntpFeed) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(INntpFeed) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() //DECLARE_NOT_AGGREGATABLE(CNntpFeed) // Remove the comment from the line above if you don't want your object to // support aggregation. The default is to support it DECLARE_REGISTRY(CNntpFeed, _T("Nntpadm.Feed.1"), _T("Nntpadm.Feed"), IDS_NNTPFEED_DESC, THREADFLAGS_BOTH) // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // INntpFeed public: STDMETHODIMP get_RemoteServer ( BSTR * pstrServerName ); STDMETHODIMP put_RemoteServer ( BSTR strServerName ); STDMETHODIMP get_FeedType ( NNTP_FEED_SERVER_TYPE * pfeedtype ); STDMETHODIMP put_FeedType ( NNTP_FEED_SERVER_TYPE feedtype ); STDMETHODIMP get_HasInbound ( BOOL * pfHasInbound ); STDMETHODIMP get_HasOutbound ( BOOL * pfHasOutbound ); STDMETHODIMP get_InboundFeed ( INntpOneWayFeed ** ppOneWayFeed ); STDMETHODIMP put_InboundFeed ( INntpOneWayFeed * pOneWayFeed ); STDMETHODIMP get_OutboundFeed ( INntpOneWayFeed ** ppOneWayFeed ); STDMETHODIMP put_OutboundFeed ( INntpOneWayFeed * pOneWayFeed ); STDMETHODIMP get_InboundFeedDispatch ( IDispatch ** ppOneWayFeed ); STDMETHODIMP put_InboundFeedDispatch ( IDispatch * pOneWayFeed ); STDMETHODIMP get_OutboundFeedDispatch ( IDispatch ** ppOneWayFeed ); STDMETHODIMP put_OutboundFeedDispatch ( IDispatch * pOneWayFeed ); private: HRESULT FromFeedPair ( CFeedPair * pFeedPair ); private: CComBSTR m_strRemoteServer; NNTP_FEED_SERVER_TYPE m_type; CComPtr m_pInbound; CComPtr m_pOutbound; }; ///////////////////////////////////////////////////////////////////////////// // CNntpAdminFeeds: class CNntpAdminFeeds : public INntpAdminFeeds, public IPrivateUnknown, public IPrivateDispatch, public IADsExtension, public INonDelegatingUnknown, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass { public: CNntpAdminFeeds(); virtual ~CNntpAdminFeeds (); BEGIN_COM_MAP(CNntpAdminFeeds) COM_INTERFACE_ENTRY(IDispatch) COM_INTERFACE_ENTRY(IADs) COM_INTERFACE_ENTRY(INntpAdminFeeds) COM_INTERFACE_ENTRY(IADsExtension) COM_INTERFACE_ENTRY(IPrivateUnknown) COM_INTERFACE_ENTRY(IPrivateDispatch) COM_INTERFACE_ENTRY(ISupportErrorInfo) END_COM_MAP() //DECLARE_NOT_AGGREGATABLE(CNntpAdminFeeds) // Remove the comment from the line above if you don't want your object to // support aggregation. The default is to support it DECLARE_REGISTRY(CNntpAdminFeeds, _T("Nntpadm.Feeds.1"), _T("Nntpadm.Feeds"), IDS_NNTPADMINFEEDS_DESC, THREADFLAGS_BOTH) // ISupportsErrorInfo STDMETHOD(InterfaceSupportsErrorInfo)(REFIID riid); // // This declares methods for the following: // IADsExtension // IUnknown // IDispatch // IPrivateUnknown // IPrivateDispatch // #define THIS_LIBID LIBID_NNTPADMLib #define THIS_IID IID_INntpAdminFeeds #include "adsimp.inl" #undef THIS_LIBID #undef THIS_IID // INntpAdminFeeds public: // // IADs methods: // DECLARE_IADS_METHODS() // Which service to configure: STDMETHODIMP get_Server ( BSTR * pstrServer ); STDMETHODIMP put_Server ( BSTR strServer ); STDMETHODIMP get_ServiceInstance ( long * plServiceInstance ); STDMETHODIMP put_ServiceInstance ( long lServiceInstance ); // Enumeration Properties: STDMETHODIMP get_Count ( long * plCount ); ////////////////////////////////////////////////////////////////////// // Methods: ////////////////////////////////////////////////////////////////////// STDMETHODIMP Enumerate ( ); STDMETHODIMP Item ( long lIndex, INntpFeed ** ppFeed ); STDMETHODIMP ItemDispatch( long lIndex, IDispatch ** ppFeed ); STDMETHODIMP FindID ( long lID, long * plIndex ); STDMETHODIMP Add ( INntpFeed * pFeed ); STDMETHODIMP AddDispatch ( IDispatch * pFeed ); STDMETHODIMP Set ( long lIndex, INntpFeed * pFeed ); STDMETHODIMP SetDispatch ( long lIndex, IDispatch * pFeed ); STDMETHODIMP Remove ( long lIndex ); ////////////////////////////////////////////////////////////////////// // Data: ////////////////////////////////////////////////////////////////////// private: CIADsImpl m_iadsImpl; BOOL m_fEnumerated; CFeedPairList m_listFeeds; ////////////////////////////////////////////////////////////////////// // Private Methods: ////////////////////////////////////////////////////////////////////// HRESULT ReturnFeedPair ( CFeedPair * pFeedPair, INntpFeed * pFeed ); long IndexFromID ( long dwFeedId ); long FindFeedPair ( long dwFeedId ); };