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/util/ArrayElement.h"
00044 #include "filter/SourceFilter.h"
00045 #include "spds/constants.h"
00046 #include "spds/SyncItem.h"
00047 #include "spds/SyncStatus.h"
00048 #include "spds/AbstractSyncSourceConfig.h"
00049 #include "spds/SyncSourceReport.h"
00050 #include "base/globalsdef.h"
00051
00052 BEGIN_NAMESPACE
00053
00059 class SyncSource {
00060
00061 private:
00062 SyncMode syncMode;
00063 unsigned long lastSync;
00064 unsigned long nextSync;
00065 WCHAR* name;
00066
00067 char next[DIM_ANCHOR];
00068 char last[DIM_ANCHOR];
00069
00070 SourceFilter* filter;
00071
00072 protected:
00073 AbstractSyncSourceConfig* config;
00074 SyncSourceReport* report;
00075
00079 void assign(SyncSource& s);
00080
00081 public:
00082
00099 SyncSource(const WCHAR* name, AbstractSyncSourceConfig* sc);
00100
00101
00102 virtual ~SyncSource();
00103
00111 const WCHAR *getName();
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00134 void setConfig(AbstractSyncSourceConfig* sc);
00135
00137 const AbstractSyncSourceConfig& getConfig() const;
00139 AbstractSyncSourceConfig& getConfig();
00140
00141
00142
00146 SyncSourceReport* getReport();
00147
00154 void setReport(SyncSourceReport* sr);
00155
00163 SyncMode getPreferredSyncMode();
00164 void setPreferredSyncMode(SyncMode syncMode);
00165
00173 SyncMode getSyncMode();
00174 void setSyncMode(SyncMode syncMode);
00175
00180 unsigned long getLastSync();
00181 void setLastSync(unsigned long timestamp);
00182
00187 unsigned long getNextSync();
00188 void setNextSync(unsigned long timestamp);
00189
00193 void setLastAnchor(const char* last);
00194 const char* getLastAnchor();
00195
00199 const char* getNextAnchor();
00200 void setNextAnchor(const char* next);
00201
00205 SourceFilter* getFilter();
00206
00213 void setFilter(SourceFilter* f);
00214
00215
00216
00217
00218
00219
00220
00221
00222
00238 virtual int beginSync();
00239
00253 virtual int endSync();
00254
00264 virtual void setItemStatus(const WCHAR* , int ) {}
00265
00276 virtual void setItemStatus(const WCHAR* key, int status,
00277 const char* ) {
00278 setItemStatus(key, status);
00279 }
00280
00286 virtual void serverStatusPackageEnded();
00287
00294 virtual void clientStatusPackageEnded();
00295
00304 virtual int removeAllItems() = 0;
00305
00311 virtual SyncItem* getFirstItem() = 0;
00312
00318 virtual SyncItem* getNextItem() = 0;
00319
00324 virtual SyncItem* getFirstNewItem() = 0;
00325
00330 virtual SyncItem* getNextNewItem() = 0;
00331
00336 virtual SyncItem* getFirstUpdatedItem() = 0;
00337
00342 virtual SyncItem* getNextUpdatedItem() = 0;
00343
00348 virtual SyncItem* getFirstDeletedItem() = 0;
00349
00354 virtual SyncItem* getNextDeletedItem() = 0;
00355
00366 virtual int addItem(SyncItem& item) = 0;
00367
00375 virtual int updateItem(SyncItem& item) = 0;
00376
00384 virtual int deleteItem(SyncItem& item) = 0;
00385
00386
00387
00388 };
00389
00390
00391 END_NAMESPACE
00392
00395 #endif