00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021 #ifndef _SML_DATA_SYNC_INTERNALS_H_
00022 #define _SML_DATA_SYNC_INTERNALS_H_
00023
00024 #include <libsyncml/data_sync_api/standard.h>
00025 #include <libsyncml/data_sync_api/callbacks.h>
00026
00027 #include <libsyncml/syncml_internals.h>
00028 #include <libsyncml/sml_support.h>
00029
00030 #include <libsyncml/sml_session.h>
00031 #include <libsyncml/sml_transport.h>
00032 #include <libsyncml/objects/sml_auth.h>
00033 #include <libsyncml/objects/sml_ds_server.h>
00034 #include <libsyncml/objects/sml_devinf_obj.h>
00035
00036 #include <glib.h>
00037
00038
00039
00040 typedef SmlBool (* SmlFunctionDataSyncInit) (
00041 SmlDataSyncObject *dsObject,
00042 SmlError **error);
00043 typedef SmlBool (* SmlFunctionDataSyncConnect) (
00044 SmlDataSyncObject *dsObject,
00045 SmlError **error);
00046 typedef SmlBool (* SmlFunctionTransportInit) (
00047 SmlDataSyncObject *dsObject,
00048 SmlError **error);
00049 typedef SmlBool (* SmlFunctionTransportConnect) (
00050 SmlDataSyncObject *dsObject,
00051 SmlError **error);
00052
00064 typedef enum {
00065 SML_PACKAGE_RECEIVED_UNKNOWN = -3,
00066 SML_PACKAGE_RECEIVED_DEVINF_REQUEST = -2,
00067 SML_PACKAGE_RECEIVED_DEVINF = -1,
00068 SML_PACKAGE_0 = 0,
00069 SML_PACKAGE_1 = 1,
00070 SML_PACKAGE_2 = 2,
00071 SML_PACKAGE_3 = 3,
00072 SML_PACKAGE_4 = 4,
00073 SML_PACKAGE_5 = 5,
00074 SML_PACKAGE_6 = 6,
00075 SML_PACKAGE_END = 7,
00076 } SmlDataSyncPackageType;
00077
00078 typedef enum {
00079 SML_DATA_SYNC_STATE_UNKNOWN = 0,
00080 SML_DATA_SYNC_STATE_NEW = 1,
00081 SML_DATA_SYNC_STATE_INITIALIZED = 2,
00082 SML_DATA_SYNC_STATE_CONNECTED = 3,
00083 SML_DATA_SYNC_STATE_SESSION_READY = 4,
00084 SML_DATA_SYNC_STATE_SENT_CHANGES = 5,
00085 SML_DATA_SYNC_STATE_DISCONNECT_IN_PROGRESS = 6,
00086 SML_DATA_SYNC_STATE_DISCONNECTED = 7,
00087 } SmlDataSyncInternalStateType;
00088
00089
00090
00093 typedef struct SmlDataSyncDatastore {
00094 SmlDataSyncObject *dsObject;
00095 void *syncChanges;
00096 void *syncContexts;
00097 char *sourceUri;
00098 char *targetUri;
00099 char *contentType;
00100 SmlDsServer *server;
00101 SmlDsSession *session;
00102 char *localNext;
00103 char *remoteNext;
00104 SmlAlertType alertType;
00105 GList *changes;
00106 } SmlDataSyncDatastore;
00107
00110 struct SmlDataSyncObject {
00111 SmlSessionType dsType;
00112 SmlTransportType tspType;
00113 SmlTransportConnectionType conType;
00114
00115 SmlManager *manager;
00116 SmlTransport *tsp;
00117 SmlAuthenticator *auth;
00118 SmlDevInf *localDevInf;
00119 SmlDevInf *remoteDevInf;
00120 SmlDevInfAgent *agent;
00121 SmlSession *session;
00122
00123 GMutex *managerMutex;
00124
00125
00126
00127 GSourceFuncs *functions;
00128 SmlThread *thread;
00129 GMainContext *context;
00130 GSource *source;
00131
00132
00133
00134 GList *datastores;
00135
00136 SmlBool useNumberOfChanges;
00137 SmlBool useTimestampAnchor;
00138 SmlBool onlyLocaltime;
00139 SmlBool onlyReplace;
00140 SmlBool useStringTable;
00141 SmlBool useWbxml;
00142 unsigned int maxObjSize;
00143 unsigned int maxMsgSize;
00144 char *identifier;
00145 SmlAuthType authType;
00146 char *username;
00147 char *password;
00148
00149 char *url;
00150 char *target;
00151
00152 SmlProtocolVersion version;
00153
00154 char *fakeDevice;
00155 char *fakeManufacturer;
00156 char *fakeModel;
00157 char *fakeSoftwareVersion;
00158
00159
00160
00161 SmlDataSyncInternalStateType internalState;
00162 int refCount;
00163 SmlDataSyncPackageType actualPackage;
00164
00165
00166
00167 SmlDataSyncEventCallback eventCallback;
00168 void *eventUserdata;
00169
00170 SmlDataSyncGetAlertTypeCallback getAlertTypeCallback;
00171 void *getAlertTypeUserdata;
00172
00173 SmlDataSyncChangeCallback changeCallback;
00174 void *changeUserdata;
00175
00176 SmlDataSyncChangeStatusCallback changeStatusCallback;
00177
00178 SmlDataSyncMappingCallback mappingCallback;
00179 void *mappingUserdata;
00180
00181 SmlDataSyncGetAnchorCallback getAnchorCallback;
00182 void *getAnchorUserdata;
00183
00184 SmlDataSyncSetAnchorCallback setAnchorCallback;
00185 void *setAnchorUserdata;
00186
00187 SmlDataSyncWriteDevInfCallback writeDevInfCallback;
00188 void *writeDevInfUserdata;
00189
00190 SmlDataSyncReadDevInfCallback readDevInfCallback;
00191 void *readDevInfUserdata;
00192
00193 SmlDataSyncHandleRemoteDevInfCallback handleRemoteDevInfCallback;
00194 void *handleRemoteDevInfUserdata;
00195
00196
00197
00198 SmlFunctionDataSyncInit funcDsInit;
00199 SmlFunctionDataSyncInit funcDsConnect;
00200 SmlFunctionTransportInit funcTspInit;
00201 SmlFunctionTransportConnect funcTspConnect;
00202 SmlDsSessionAlertCb funcDatastoreAlert;
00203 };
00204
00207 typedef struct SmlDataSyncChange {
00208 SmlDataSyncDatastore *datastore;
00209 SmlChangeType type;
00210 char *name;
00211 char *data;
00212 unsigned int size;
00213 void *userdata;
00214 } SmlDataSyncChange;
00215
00216 void smlDataSyncSendEvent(
00217 SmlDataSyncObject *dsObject,
00218 SmlDataSyncEventType type,
00219 void *userdata,
00220 SmlError *error);
00221
00222 SmlBool smlDataSyncSendMap(
00223 SmlDataSyncObject *dsObject,
00224 SmlError **error);
00225
00226 #endif