123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235236237238239240241242243244245246247248249250251252253254255256257258259260261262263264265266267268269270271272273274275276277278279280281282283284285286287288289290291292293294295296297298299300301302303304305306307308309310311312313314315316317318319320321322323324325326327328329330331332333 |
- #ifndef ECSYNCCONTEXT_H
- #define ECSYNCCONTEXT_H
- #include <mutex>
- #include <kopano/zcdefs.h>
- #include <mapidefs.h>
- #include "../provider/client/ics_client.hpp"
- #include <map>
- #include <set>
- #include <string>
- #include <IECChangeAdvisor.h>
- #include <IECChangeAdviseSink.h>
- namespace KC {
- typedef std::map<std::string, IStream *> StatusStreamMap;
- typedef std::map<std::string,SSyncState> SyncStateMap;
- typedef std::map<ULONG,ULONG> NotifiedSyncIdMap;
- class ECLogger;
- class ECSyncSettings;
- class ECSyncContext _kc_final {
- public:
-
- ECSyncContext(LPMDB lpStore, ECLogger *lpLogger);
-
- ~ECSyncContext();
-
- HRESULT HrGetMsgStore(LPMDB *lppMsgStore);
-
- HRESULT HrGetReceiveFolder(LPMAPIFOLDER *lppInboxFolder);
-
- HRESULT HrGetChangeAdvisor(IECChangeAdvisor **lppChangeAdvisor);
-
- HRESULT HrResetChangeAdvisor();
-
- HRESULT HrGetChangeAdviseSink(IECChangeAdviseSink **lppChangeAdviseSink);
-
- HRESULT HrQueryHierarchyTable(LPSPropTagArray lpsPropTags, LPSRowSet *lppRows);
-
- HRESULT HrOpenRootFolder(LPMAPIFOLDER *lppRootFolder, LPMDB *lppMsgStore = NULL);
-
- HRESULT HrOpenFolder(SBinary *lpsEntryID, LPMAPIFOLDER *lppFolder);
-
- HRESULT HrNotifyNewMail(LPNOTIFICATION lpNotification);
-
- HRESULT HrGetSteps(SBinary *lpEntryID, SBinary *lpSourceKey, ULONG ulSyncFlags, ULONG *lpulSteps);
-
- HRESULT HrUpdateChangeId(LPSTREAM lpStream);
-
- bool SyncStatusLoaded() const;
-
- HRESULT HrClearSyncStatus();
-
- HRESULT HrLoadSyncStatus(SBinary *lpsSyncState);
-
- HRESULT HrSaveSyncStatus(LPSPropValue *lppSyncStatusProp);
-
- HRESULT HrGetSyncStatusStream(LPMAPIFOLDER lpFolder, LPSTREAM *lppStream);
-
- HRESULT HrGetSyncStatusStream(SBinary *lpsSourceKey, LPSTREAM *lppStream);
-
- HRESULT GetResyncID(ULONG *lpulResyncID);
-
- HRESULT SetResyncID(ULONG ulResyncID);
-
- HRESULT GetStoredServerUid(LPGUID lpServerUid);
-
- HRESULT SetStoredServerUid(LPGUID lpServerUid);
-
- HRESULT GetServerUid(LPGUID lpServerUid);
- private:
-
- HRESULT HrGetSyncStateFromSourceKey(SBinary *lpSourceKey, SSyncState *lpsSyncState);
-
- ULONG OnChange(ULONG ulFlags, LPENTRYLIST lpEntryList);
-
- HRESULT HrReleaseChangeAdvisor();
- LPMDB m_lpStore;
- ECLogger *m_lpLogger;
- ECSyncSettings *m_lpSettings;
- IECChangeAdvisor *m_lpChangeAdvisor = nullptr;
- IECChangeAdviseSink *m_lpChangeAdviseSink = nullptr;
- StatusStreamMap m_mapSyncStatus;
- SyncStateMap m_mapStates;
- NotifiedSyncIdMap m_mapNotifiedSyncIds;
- std::mutex m_hMutex;
- };
- }
- #endif
|