00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00022
00023
00024
00025
00026
00027
00028
00029
00030
00031
00032
00033
00034
00035
00036 #ifndef INCL_SYNC_SOURCE
00037 #define INCL_SYNC_SOURCE
00038
00042 #include "base/fscapi.h"
00043 #include "base/ErrorHandler.h"
00044 #include "base/util/ArrayElement.h"
00045 #include "filter/SourceFilter.h"
00046 #include "spds/constants.h"
00047 #include "spds/SyncItem.h"
00048 #include "spds/SyncStatus.h"
00049 #include "spds/AbstractSyncSourceConfig.h"
00050 #include "spds/SyncSourceReport.h"
00051 #include "base/globalsdef.h"
00052
00053 BEGIN_NAMESPACE
00054
00060 class SyncSource {
00061
00062 private:
00063 SyncMode syncMode;
00064 unsigned long lastSync;
00065 unsigned long nextSync;
00066 WCHAR* name;
00067
00068 char next[DIM_ANCHOR];
00069 char last[DIM_ANCHOR];
00070
00071 SourceFilter* filter;
00072
00073 protected:
00074 AbstractSyncSourceConfig* config;
00075 SyncSourceReport* report;
00076
00080 void assign(SyncSource& s);
00081
00082 public:
00083
00100 SyncSource(const WCHAR* name, AbstractSyncSourceConfig* sc);
00101
00102
00103 virtual ~SyncSource();
00104
00112 const WCHAR *getName();
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00135 void setConfig(AbstractSyncSourceConfig* sc);
00136
00138 const AbstractSyncSourceConfig& getConfig() const;
00140 AbstractSyncSourceConfig& getConfig();
00141
00142
00143
00147 SyncSourceReport* getReport();
00148
00155 void setReport(SyncSourceReport* sr);
00156
00164 SyncMode getPreferredSyncMode();
00165 void setPreferredSyncMode(SyncMode syncMode);
00166
00174 SyncMode getSyncMode();
00175 void setSyncMode(SyncMode syncMode);
00176
00181 unsigned long getLastSync();
00182 void setLastSync(unsigned long timestamp);
00183
00188 unsigned long getNextSync();
00189 void setNextSync(unsigned long timestamp);
00190
00194 void setLastAnchor(const char* last);
00195 const char* getLastAnchor();
00196
00200 const char* getNextAnchor();
00201 void setNextAnchor(const char* next);
00202
00206 SourceFilter* getFilter();
00207
00214 void setFilter(SourceFilter* f);
00215
00216
00217
00218
00219
00220
00221
00222
00223
00239 virtual int beginSync();
00240
00254 virtual int endSync();
00255
00265 virtual void setItemStatus(const WCHAR* , int ) {}
00266
00277 virtual void setItemStatus(const WCHAR* key, int status,
00278 const char* ) {
00279 setItemStatus(key, status);
00280 }
00281
00287 virtual void serverStatusPackageEnded();
00288
00295 virtual void clientStatusPackageEnded();
00296
00305 virtual int removeAllItems() = 0;
00306
00312 virtual SyncItem* getFirstItemKey() = 0;
00313
00319 virtual SyncItem* getNextItemKey() = 0;
00320
00326 virtual SyncItem* getFirstItem() = 0;
00327
00333 virtual SyncItem* getNextItem() = 0;
00334
00339 virtual SyncItem* getFirstNewItem() = 0;
00340
00345 virtual SyncItem* getNextNewItem() = 0;
00346
00351 virtual SyncItem* getFirstUpdatedItem() = 0;
00352
00357 virtual SyncItem* getNextUpdatedItem() = 0;
00358
00363 virtual SyncItem* getFirstDeletedItem() = 0;
00364
00369 virtual SyncItem* getNextDeletedItem() = 0;
00370
00381 virtual int addItem(SyncItem& item) = 0;
00382
00390 virtual int updateItem(SyncItem& item) = 0;
00391
00399 virtual int deleteItem(SyncItem& item) = 0;
00400
00401
00402
00403 };
00404
00405
00406 END_NAMESPACE
00407
00410 #endif