|
|
// feeds.h : Declaration of the CNntpAdminFeeds
/////////////////////////////////////////////////////////////////////////////
// Dependencies:
#include "feedinfo.h"
/////////////////////////////////////////////////////////////////////////////
// CNntpOneWayFeed:
class CNntpOneWayFeed: public CComDualImpl<INntpOneWayFeed, &IID_INntpOneWayFeed, &LIBID_NNTPADMLib>, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass<CNntpOneWayFeed,&CLSID_CNntpOneWayFeed> { 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<INntpFeed, &IID_INntpFeed, &LIBID_NNTPADMLib>, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass<CNntpFeed,&CLSID_CNntpFeed> { 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<INntpOneWayFeed> m_pInbound; CComPtr<INntpOneWayFeed> m_pOutbound; };
/////////////////////////////////////////////////////////////////////////////
// CNntpAdminFeeds:
class CNntpAdminFeeds : public INntpAdminFeeds, public IPrivateUnknown, public IPrivateDispatch, public IADsExtension, public INonDelegatingUnknown, public ISupportErrorInfo, public CComObjectRoot, public CComCoClass<CNntpAdminFeeds,&CLSID_CNntpAdminFeeds> { 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 ); };
|