Code/Resource
Windows Develop
Linux-Unix program
Internet-Socket-Network
Web Server
Browser Client
Ftp Server
Ftp Client
Browser Plugins
Proxy Server
Email Server
Email Client
WEB Mail
Firewall-Security
Telnet Server
Telnet Client
ICQ-IM-Chat
Search Engine
Sniffer Package capture
Remote Control
xml-soap-webservice
P2P
WEB(ASP,PHP,...)
TCP/IP Stack
SNMP
Grid Computing
SilverLight
DNS
Cluster Service
Network Security
Communication-Mobile
Game Program
Editor
Multimedia program
Graph program
Compiler program
Compress-Decompress algrithms
Crypt_Decrypt algrithms
Mathimatics-Numerical algorithms
MultiLanguage
Disk/Storage
Java Develop
assembly language
Applications
Other systems
Database system
Embeded-SCM Develop
FlashMX/Flex
source in ebook
Delphi VCL
OS Develop
MiddleWare
MPI
MacOS develop
LabView
ELanguage
Software/Tools
E-Books
Artical/Document
delagent.h
Package: shell.rar [view]
Upload User: xhy777
Upload Date: 2007-02-14
Package Size: 24088k
Code Size: 5k
Category:
Windows Kernel
Development Platform:
Visual C++
- //
- // Delivery Agents base class
- #ifndef _DELAGENT_H
- #define _DELAGENT_H
- #include "offline.h"
- #define INET_S_AGENT_BASIC_SUCCESS _HRESULT_TYPEDEF_(0x000C0FFEL)
- class CDeliveryAgent : public ISubscriptionAgentControl,
- public IShellPropSheetExt,
- #ifdef UNICODE
- public IExtractIconA,
- #endif
- public IExtractIcon,
- public ISubscriptionAgentShellExt
- {
- private:
- // Data for our OLE support
- ULONG m_cRef;
- #ifdef AGENT_AUTODIAL
- enum DIALER_STATUS { DIALER_OFFLINE, DIALER_CONNECTING, DIALER_ONLINE };
- DIALER_STATUS m_iDialerStatus;
- #endif
- enum {
- FLAG_BUSY =0x00010000, // addrefed ourselves; between begin & end reports
- FLAG_PAUSED =0x00020000, // We are paused
- FLAG_OPSTARTED =0x00040000, // We've entered StartOperation
- };
- // Derived agents can use high 8 bits of this field
- DWORD m_dwAgentFlags;
- void SendUpdateBegin();
- void SendUpdateEnd();
- HRESULT ProcessEndItem(ISubscriptionItem *pEndItem);
- protected:
- // Upper 16 bits allowable here
- enum {
- FLAG_HOSTED =0x00100000, // hosted by another delivery agent
- FLAG_CHANGESONLY =0x00200000, // We're in "Changes Only" mode
- FLAG_WAITING_FOR_INCREASED_CACHE = 0x00400000, // Special paused state
- };
- POOEBuf m_pBuf;
- HPROPSHEETPAGE m_hPage[MAX_WC_AGENT_PAGES];
- ISubscriptionAgentEvents *m_pAgentEvents;
- ISubscriptionItem *m_pSubscriptionItem;
- SUBSCRIPTIONCOOKIE m_SubscriptionCookie;
- long m_lSizeDownloadedKB; // Size downloaded in KB
- SCODE m_scEndStatus;
- void SendUpdateNone(); // Call from StartOperation if we won't be doing anything
- void SendUpdateProgress(LPCWSTR pwszURL, long lProgress, long lMax, long lCurSizeKB=-1);
- BOOL IsAgentFlagSet(int iFlag) { return (m_dwAgentFlags & iFlag); }
- void ClearAgentFlag(int iFlag) { m_dwAgentFlags &= ~iFlag; }
- void SetAgentFlag(int iFlag) { m_dwAgentFlags |= iFlag; }
- HRESULT CheckResponseCode(DWORD dwHttpResponseCode); // Also sets EndStatus. E_ABORT on error.
- // DIALER_STATUS GetDialerStatus() { return m_iDialerStatus; }
- void SetEndStatus(SCODE sc) { m_scEndStatus = sc; }
- virtual ~CDeliveryAgent();
- public:
- CDeliveryAgent();
- BOOL GetBusy() { return IsAgentFlagSet(FLAG_BUSY); }
- BOOL IsPaused() { return IsAgentFlagSet(FLAG_PAUSED); }
- SCODE GetEndStatus() { return m_scEndStatus; }
- // IUnknown members
- STDMETHODIMP QueryInterface(REFIID riid, void **punk);
- STDMETHODIMP_(ULONG) AddRef(void);
- STDMETHODIMP_(ULONG) Release(void);
- // ISubscriptionAgentControl members
- STDMETHODIMP StartUpdate(IUnknown *pItem, IUnknown *punkAdvise);
- STDMETHODIMP PauseUpdate(DWORD dwFlags);
- STDMETHODIMP ResumeUpdate(DWORD dwFlags);
- STDMETHODIMP AbortUpdate(DWORD dwFlags);
- STDMETHODIMP SubscriptionControl(IUnknown *pItem, DWORD dwControl); // Called on delete
- // IShellPropSheetExt members
- STDMETHODIMP AddPages(LPFNADDPROPSHEETPAGE, LPARAM);
- STDMETHODIMP ReplacePage(UINT, LPFNADDPROPSHEETPAGE, LPARAM);
- // ISubscriptionAgentShellExt
- STDMETHODIMP Initialize(SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
- LPCWSTR pwszURL, LPCWSTR pwszName,
- SUBSCRIPTIONTYPE subsType);
- STDMETHODIMP RemovePages(HWND hdlg);
- STDMETHODIMP SaveSubscription();
- STDMETHODIMP URLChange(LPCWSTR pwszNewURL);
- #ifdef UNICODE
- // IExtractIconA
- STDMETHODIMP GetIconLocation(UINT uFlags, LPSTR szIconFile, UINT cchMax, int * piIndex, UINT * pwFlags);
- STDMETHODIMP Extract(LPCSTR pszFile, UINT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIconSize);
- #endif
- // IExtractIconT
- STDMETHODIMP GetIconLocation(UINT uFlags, LPTSTR szIconFile, UINT cchMax, int * piIndex, UINT * pwFlags);
- STDMETHODIMP Extract(LPCTSTR pszFile, UINT nIconIndex, HICON * phiconLarge, HICON * phiconSmall, UINT nIconSize);
- private:
- // Functions we provide common implementations for
- HRESULT DoStartDownload();
- #ifdef AGENT_AUTODIAL
- HRESULT NotifyAutoDialer();
- HRESULT OnInetOnline();
- HRESULT OnInetOffline();
- #endif
- protected:
- // Virtual functions for our derived classes to override as necessary
- // We provide implementations which should be called after processing
- virtual HRESULT AgentPause(DWORD dwFlags);
- virtual HRESULT AgentResume(DWORD dwFlags);
- virtual HRESULT AgentAbort(DWORD dwFlags);
- virtual HRESULT ModifyUpdateEnd(ISubscriptionItem *pEndItem, UINT *puiRes);
- virtual HRESULT StartOperation(); // connects to internet
- virtual HRESULT StartDownload() = 0; // we just got connected
- virtual void CleanUp();
- };
- #endif // _DELAGENT_H