00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019 #ifndef INCL_SYNC_ITEM
00020 #define INCL_SYNC_ITEM
00021
00023 #include "base/fscapi.h"
00024 #include "base/constants.h"
00025 #include "base/util/ArrayElement.h"
00026 #include "spds/constants.h"
00027 #include "spds/SyncStatus.h"
00028
00029 #include <string.h>
00030
00031 typedef enum {
00032 SYNC_STATE_NEW = 'N',
00033 SYNC_STATE_UPDATED = 'U',
00034 SYNC_STATE_DELETED = 'D',
00035 SYNC_STATE_NONE = ' '
00036 } SyncState;
00037
00038 class SyncItem : public ArrayElement {
00039
00040 private:
00041
00042 char* data;
00043 char* encoding;
00044 long size;
00045
00046 WCHAR key[DIM_KEY];
00047 WCHAR type[DIM_MIME_TYPE];
00048
00049 long lastModificationTime;
00050 SyncState state;
00051
00052 WCHAR* targetParent;
00053 WCHAR* sourceParent;
00054
00058 void initialize() EXTRA_SECTION_01;
00059
00060 public:
00061
00062
00063
00064 SyncItem() EXTRA_SECTION_01;
00065
00066 ~SyncItem() EXTRA_SECTION_01;
00067
00068
00069
00070
00071
00072
00073
00074 SyncItem(const WCHAR* key) EXTRA_SECTION_01;
00075
00076
00077
00078
00079
00080
00081
00082
00083 const WCHAR* getKey() EXTRA_SECTION_01;
00084
00085
00086
00087
00088
00089
00090
00091 void setKey(const WCHAR* key) EXTRA_SECTION_01;
00092
00093
00094
00095
00096
00097
00098
00099 void setModificationTime(long timestamp) EXTRA_SECTION_01;
00100
00101
00102
00103
00104
00105
00106 long getModificationTime() EXTRA_SECTION_01;
00107
00108
00109
00110
00111
00112
00113
00114
00115
00116
00117
00118
00119
00120
00121
00122
00123
00124
00125
00126
00127
00128
00129
00130
00131
00132
00133
00134
00135 void* setData(const void* data, long size) EXTRA_SECTION_01;
00136
00137
00138
00139
00140
00141
00142
00143 void* getData() EXTRA_SECTION_01;
00144
00145
00146
00147
00148
00149 long getDataSize() EXTRA_SECTION_01;
00150
00151
00152
00153
00154
00155
00156 void setDataSize(long s) EXTRA_SECTION_01;
00157
00169 void setDataEncoding(const char* encoding) EXTRA_SECTION_01;
00170
00177 const char* getDataEncoding() EXTRA_SECTION_01;
00178
00195 int changeDataEncoding(const char* encoding, const char* encryption, const char* credentialInfo = NULL) EXTRA_SECTION_01;
00196
00197
00198
00199
00200
00201
00202 void setDataType(const WCHAR* type) EXTRA_SECTION_01;
00203
00204
00205
00206
00207 const WCHAR* getDataType() EXTRA_SECTION_01;
00208
00209
00210
00211
00212
00213
00214 void setState(SyncState newState) EXTRA_SECTION_01;
00215
00216
00217
00218
00219 SyncState getState() EXTRA_SECTION_01;
00220
00226 const WCHAR* getTargetParent() EXTRA_SECTION_01;
00227
00234 void setTargetParent(const WCHAR* parent) EXTRA_SECTION_01;
00235
00241 const WCHAR* getSourceParent() EXTRA_SECTION_01;
00242
00249 void setSourceParent(const WCHAR* parent) EXTRA_SECTION_01;
00250
00256 ArrayElement* clone() EXTRA_SECTION_01;
00257
00261 struct encodings {
00262 static const char* const plain;
00263 static const char* const escaped;
00264 static const char* const des;
00268 static const char* encodingString(const char* encoding) {
00269 return encoding ? encoding : plain;
00270 }
00271
00273 static const BOOL isSupported(const char* encoding) {
00274 const char* enc = encodingString(encoding);
00275 return !strcmp(enc, plain) ||
00276 !strcmp(enc, escaped) ||
00277 !strcmp(enc, des);
00278 }
00279 };
00280
00281 private:
00283 int transformData(const char* name, BOOL encode, const char* password);
00284 };
00285
00287 #endif