00001
00002
00003
00004
00005
00006
00007
00008
00009
00010
00011
00012
00013
00014
00015
00016
00017
00018
00019
00020
00021
00029
00030 #ifndef _SML_DS_SERVER_INTERNALS_H_
00031 #define _SML_DS_SERVER_INTERNALS_H_
00032
00033 typedef void (* SmlDsSessionMapCb) (SmlDsSession *dsession, SmlLocation *orig, SmlLocation *mapped, void *userdata);
00034
00035 typedef struct SmlWriteContext {
00036 SmlDsSessionWriteCb callback;
00037 char *uid;
00038 char *newuid;
00039 SmlStatus *status;
00040 void *userdata;
00041 SmlChangeType type;
00042 SmlDsSession *session;
00043 } SmlWriteContext;
00044
00045 struct SmlDsSession {
00046 gint refCount;
00047
00048 SmlDsServer *server;
00049 SmlSession *session;
00050
00051 SmlLocation *target;
00052 SmlLocation *location;
00053
00055 SmlDsSessionAlertCb recvAlertCallback;
00056 void *recvAlertCallbackUserdata;
00057 SmlCommand *alertCommand;
00058
00060 SmlStatusReplyCb sentAlertCallback;
00061 void *sentAlertCallbackUserdata;
00062
00064 SmlDsSessionSyncCb recvSyncCallback;
00065 void *recvSyncCallbackUserdata;
00066 SmlDsSessionChangesCb changesCallback;
00067 void *changesCallbackUserdata;
00072 GList *recvSync;
00073 GList *recvChanges;
00074 SmlErrorType syncReply;
00075 SmlBool finalLock;
00076 SmlBool emptySync;
00077
00079 SmlStatusReplyCb sentSyncCallback;
00080 void *sentSyncCallbackUserdata;
00081
00083 SmlDsSessionEventCb recvEventCallback;
00084 void *recvEventCallbackUserdata;
00085
00087 SmlCommand *syncCommand;
00088
00089 GList *pendingMaps;
00090 GMutex *pendingMapsLock;
00091 GList *mapItems;
00092
00094 SmlDsSessionMapCb recvMappingCallback;
00095 void *recvMappingCallbackUserdata;
00096
00097 GMutex *write_lock;
00098 GMutex *lock;
00099 };
00100
00101 struct SmlDsServer {
00102 SmlLocation *location;
00104 SmlLocation *target;
00105 char *contenttype;
00106 SmlDsServerType servertype;
00107 SmlManager *manager;
00108
00110 SmlDsSessionConnectCb connectCallback;
00111 void *connectCallbackUserdata;
00112
00113 SmlDsServerSanSessionCb sanSessionCallback;
00114 void *sanSessionCallbackUserdata;
00115 SmlDsServerSanCb sanCallback;
00116 void *sanCallbackUserdata;
00117 };
00118
00119 void smlDsSessionRecvAlert(SmlSession *session, SmlCommand *cmd, void *userdata);
00120 void smlDsSessionRecvSync(SmlSession *session, SmlCommand *cmd, void *userdata);
00121 void smlDsSessionRecvChange(SmlSession *session, SmlCommand *cmd, void *userdata);
00122 void smlDsSessionRecvMap(SmlSession *session, SmlCommand *cmd, void *userdata);
00123 SmlDsSession *smlDsServerRecvAlert(SmlDsServer *server, SmlSession *session, SmlCommand *cmd);
00124
00125 SmlDsSession *smlDsSessionNew(SmlDsServer *server, SmlSession *session, SmlError **error);
00126 void smlDsSessionFree(SmlDsSession *dsession);
00127
00128 void smlDsSessionGetMapping(SmlDsSession *dsession, SmlDsSessionMapCb mapCallback, void *userdata);
00129
00130 #endif //_SML_DS_SERVER_INTERNALS_H_
00131