Source code of Windows XP (NT5)
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

164 lines
4.4 KiB

  1. //
  2. // OneStop Offline Synch handler
  3. //
  4. #ifndef _OFFSYNC_H
  5. #define _OFFSYNC_H
  6. class CThrottler;
  7. class COfflineSync : public ISyncMgrSynchronize,
  8. public ISubscriptionAgentEvents
  9. {
  10. private:
  11. ~COfflineSync();
  12. ULONG m_cRef;
  13. ISyncMgrSynchronizeCallback *m_pSyncCallback;
  14. ISubscriptionMgr2 *m_pSubsMgr2;
  15. DWORD m_dwSyncFlags;
  16. HWND m_hWndParent;
  17. CThrottler *m_pThrottler;
  18. HRESULT m_hrResult;
  19. ULONG m_nItemsToRun;
  20. ULONG m_nItemsCompleted;
  21. BOOL m_fCookiesSpecified;
  22. SUBSCRIPTIONCOOKIE *m_pItems;
  23. void Cleanup();
  24. BOOL AreWeDoneYet();
  25. HRESULT GetSubsMgr2();
  26. int FindCookie(const SUBSCRIPTIONCOOKIE *pCookie);
  27. HRESULT DupItems(ULONG cbNumItems, SUBSCRIPTIONCOOKIE *pItemIDs);
  28. HRESULT CallSyncMgrProgress(const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
  29. const WCHAR *lpcStatusText, DWORD dwStatusType, INT iProgValue, INT iMaxValue);
  30. public:
  31. COfflineSync();
  32. HWND GetParentWindow() { return m_hWndParent; }
  33. // IUnknown members
  34. STDMETHODIMP QueryInterface(REFIID riid, void **punk);
  35. STDMETHODIMP_(ULONG) AddRef(void);
  36. STDMETHODIMP_(ULONG) Release(void);
  37. // ISyncMgrSynchronize members
  38. STDMETHODIMP Initialize(
  39. /* [in] */ DWORD dwReserved,
  40. /* [in] */ DWORD dwSyncMgrFlags,
  41. /* [in] */ DWORD cbCookie,
  42. /* [in] */ const BYTE *lpCookie);
  43. STDMETHODIMP GetHandlerInfo(
  44. /* [out] */ LPSYNCMGRHANDLERINFO *ppSyncMgrHandlerInfo);
  45. STDMETHODIMP EnumSyncMgrItems(
  46. /* [out] */ ISyncMgrEnumItems **ppSyncMgrEnumItems);
  47. STDMETHODIMP GetItemObject(
  48. /* [in] */ REFSYNCMGRITEMID ItemID,
  49. /* [in] */ REFIID riid,
  50. /* [out] */ void **ppv);
  51. STDMETHODIMP ShowProperties(
  52. /* [in] */ HWND hWndParent,
  53. /* [in] */ REFSYNCMGRITEMID ItemID);
  54. STDMETHODIMP SetProgressCallback(
  55. /* [in] */ ISyncMgrSynchronizeCallback *lpCallBack);
  56. STDMETHODIMP PrepareForSync(
  57. /* [in] */ ULONG cbNumItems,
  58. /* [in] */ SYNCMGRITEMID *pItemIDs,
  59. /* [in] */ HWND hWndParent,
  60. /* [in] */ DWORD dwReserved);
  61. STDMETHODIMP Synchronize(
  62. /* [in] */ HWND hWndParent);
  63. STDMETHODIMP SetItemStatus(
  64. /* [in] */ REFSYNCMGRITEMID ItemID,
  65. /* [in] */ DWORD dwSyncMgrStatus);
  66. STDMETHODIMP ShowError(
  67. /* [in] */ HWND hWndParent,
  68. /* [in] */ REFSYNCMGRERRORID ErrorID);
  69. // ISubscriptionAgentEvents members
  70. STDMETHODIMP UpdateBegin(
  71. const SUBSCRIPTIONCOOKIE *pSubscriptionCookie);
  72. STDMETHODIMP UpdateProgress(
  73. const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
  74. long lSizeDownloaded,
  75. long lProgressCurrent,
  76. long lProgressMax,
  77. HRESULT hrStatus,
  78. LPCWSTR wszStatus);
  79. STDMETHODIMP UpdateEnd(
  80. const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
  81. long lSizeDownloaded,
  82. HRESULT hrResult,
  83. LPCWSTR wszResult);
  84. STDMETHODIMP ReportError(
  85. const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
  86. HRESULT hrError,
  87. LPCWSTR wszError);
  88. HRESULT UpdateSyncMgrStatus(const SUBSCRIPTIONCOOKIE *pSubscriptionCookie,
  89. LPCWSTR wszStatusMsg, DWORD dwStatus);
  90. };
  91. class COfflineEnum : public ISyncMgrEnumItems
  92. {
  93. private:
  94. ~COfflineEnum();
  95. ULONG m_cRef;
  96. SYNCMGRITEM *m_pItems;
  97. ULONG m_iNumItems;
  98. ULONG m_iEnumPtr;
  99. HRESULT LoadItem(ISubscriptionMgr2 *pSubsMgr2,
  100. const SUBSCRIPTIONCOOKIE *pCookie, SYNCMGRITEM *pItem, DWORD dwItemState);
  101. public:
  102. COfflineEnum();
  103. HRESULT Init(ISubscriptionMgr2 *pSubsMgr2, ULONG nItems,
  104. SUBSCRIPTIONCOOKIE *pInitCookies, ISyncMgrEnumItems **ppenum, DWORD dwSyncFlags);
  105. // IUnknown members
  106. STDMETHODIMP QueryInterface(REFIID riid, void **punk);
  107. STDMETHODIMP_(ULONG) AddRef(void);
  108. STDMETHODIMP_(ULONG) Release(void);
  109. // IEnumOfflineItems members
  110. STDMETHODIMP Next(
  111. /* [in] */ ULONG celt,
  112. /* [length_is][size_is][out] */ LPSYNCMGRITEM rgelt,
  113. /* [out] */ ULONG *pceltFetched);
  114. STDMETHODIMP Skip(
  115. /* [in] */ ULONG celt);
  116. STDMETHODIMP Reset( void);
  117. STDMETHODIMP Clone(
  118. /* [out] */ ISyncMgrEnumItems **ppenum);
  119. };
  120. #include "throttle.h"
  121. #endif