From: <svn...@op...> - 2009-07-08 10:22:25
|
Author: bellmich Date: Wed Jul 8 12:22:14 2009 New Revision: 1157 URL: http://libsyncml.opensync.org/changeset/1157 Log: migrated sml_ds_server from SmlError to GError Modified: trunk/libsyncml/objects/sml_ds_server.c trunk/libsyncml/objects/sml_ds_server.h trunk/libsyncml/objects/sml_ds_server_internals.h Modified: trunk/libsyncml/objects/sml_ds_server.c ============================================================================== --- trunk/libsyncml/objects/sml_ds_server.c Wed Jul 8 11:19:54 2009 (r1156) +++ trunk/libsyncml/objects/sml_ds_server.c Wed Jul 8 12:22:14 2009 (r1157) @@ -30,7 +30,7 @@ #include <libsyncml/sml_command_internals.h> #include <libsyncml/sml_elements_internals.h> -static SmlWriteContext *_write_context_find(SmlDsSession *dsession, const char *uid, SmlChangeType type) +static SmlWriteContext *_write_context_find(SmlDsSession *dsession, const gchar *uid, SmlChangeType type) { smlTrace(TRACE_ENTRY, "%s(%p, %s, %i)", __func__, dsession, VA_STRING(uid), type); @@ -89,7 +89,7 @@ return; } - ctx->callback(dsession, ctx->status, ctx->newuid, ctx->userdata); + ctx->callback(dsession, ctx->status, ctx->userdata); g_mutex_lock(dsession->pendingMapsLock); dsession->pendingMaps = g_list_remove(dsession->pendingMaps, ctx); @@ -189,7 +189,10 @@ smlTrace(TRACE_EXIT, "%s", __func__); } -SmlDsServer *smlDsServerNew(const char *type, SmlLocation *location, SmlError **error) +SmlDsServer* +smlDsServerNew (const gchar *type, + SmlLocation *location, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%s, %p, %p)", __func__, VA_STRING(type), location, error); smlAssert(location); @@ -207,13 +210,16 @@ smlTrace(TRACE_EXIT, "%s: %p", __func__, server); return server; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return NULL; } -SmlDsServer *smlDsClientNew(const char *type, SmlLocation *location, SmlLocation *target, SmlError **error) +SmlDsServer* +smlDsClientNew (const gchar *type, + SmlLocation *location, + SmlLocation *target, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%s, %p, %p, %p)", __func__, VA_STRING(type), location, target, error); smlAssert(location); @@ -235,9 +241,8 @@ smlTrace(TRACE_EXIT, "%s: %p", __func__, server); return server; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return NULL; } @@ -287,18 +292,6 @@ smlTrace(TRACE_EXIT, "%s", __func__); } -void smlDsServerSetSanCallback(SmlDsServer *server, SmlDsServerSanCb callback, void *userdata) -{ - smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, callback, userdata); - smlAssert(server); - smlAssert(server->servertype == SML_DS_CLIENT); - - server->sanCallback = callback; - server->sanCallbackUserdata = userdata; - - smlTrace(TRACE_EXIT, "%s", __func__); -} - void smlDsServerSetSanSessionCallback(SmlDsServer *server, SmlDsServerSanSessionCb callback, void *userdata) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, callback, userdata); @@ -325,7 +318,10 @@ return server->contenttype; } -SmlBool smlDsServerAddSan(SmlDsServer *server, SmlNotification *san, SmlError **error) +gboolean +smlDsServerAddSan (SmlDsServer *server, + SmlNotification *san, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, san, error); smlAssert(server); @@ -337,16 +333,15 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } SmlDsSession *smlDsServerRecvAlert(SmlDsServer *server, SmlSession *session, SmlCommand *cmd) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, session, cmd); - SmlError *error = NULL; + GError *error = NULL; SmlDsSession *dsession = smlDsSessionNew(server, session, &error); if (!dsession) @@ -361,14 +356,22 @@ smlTrace(TRACE_EXIT, "%s", __func__); return dsession; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); return NULL; } -SmlDsSession *smlDsServerSendAlert(SmlDsServer *server, SmlSession *session, SmlAlertType type, const char *last, const char *next, SmlStatusReplyCb callback, void *userdata, SmlError **error) +SmlDsSession* +smlDsServerSendAlert (SmlDsServer *server, + SmlSession *session, + SmlAlertType type, + const gchar *last, + const gchar *next, + SmlStatusReplyCb callback, + void *userdata, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %i, %s, %s, %p)", __func__, server, session, type, VA_STRING(last), VA_STRING(next), error); smlAssert(server); @@ -381,29 +384,31 @@ if (server->manager) { if (!smlManagerObjectRegister(server->manager, SML_COMMAND_TYPE_SYNC, session, server->location, NULL, NULL, smlDsSessionRecvSync, smlDsSessionRecvChange, dsession, error)) - goto error_free_dsession; + goto error; if (!smlManagerObjectRegister(server->manager, SML_COMMAND_TYPE_MAP, session, server->location, NULL, NULL, smlDsSessionRecvMap, NULL, dsession, error)) - goto error_free_dsession; + goto error; if (!smlManagerObjectRegister(server->manager, SML_COMMAND_TYPE_ALERT, session, server->location, NULL, NULL, smlDsSessionRecvAlert, NULL, dsession, error)) - goto error_free_dsession; + goto error; } if (!smlDsSessionSendAlert(dsession, type, last, next, callback, userdata, error)) - goto error_free_dsession; + goto error; smlTrace(TRACE_EXIT, "%s", __func__); return dsession; - -error_free_dsession: - smlSafeFree((gpointer *)&dsession); error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + if (dsession) + smlSafeFree((gpointer *)&dsession); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return NULL; } -SmlDsSession *smlDsSessionNew(SmlDsServer *server, SmlSession *session, SmlError **error) +SmlDsSession* +smlDsSessionNew (SmlDsServer *server, + SmlSession *session, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, session, error); smlAssert(server); @@ -432,9 +437,8 @@ smlTrace(TRACE_EXIT, "%s: %p", __func__, dsession); return dsession; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return NULL; } @@ -514,7 +518,7 @@ void smlDsSessionDispatch(SmlDsSession *dsession) { smlTrace(TRACE_ENTRY, "%s(%p)", __func__, dsession); - SmlError *error = NULL; + GError *error = NULL; SmlStatus *reply = NULL; /* A dispatch function should never block on a @@ -618,7 +622,8 @@ if (!cmd->private.change.items || !g_list_length(cmd->private.change.items)) { - smlErrorSet(&error, SML_ERROR_GENERIC, "No items found in command."); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, + "No items found in command."); goto error; } @@ -634,7 +639,7 @@ SmlItem *item = g_list_nth_data(cmd->private.change.items, i); if (!item) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Item %i of the command's item list is NULL.", i); goto error; } @@ -642,7 +647,7 @@ * uid (if we are a client for example). If it is not given we use the * source uri. This has then to be translated by the sync engine of course */ if ((!item->source && !item->target)) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Cannot determine UID because source an target are missing on item %i.", i); goto error; } @@ -706,16 +711,16 @@ g_mutex_unlock(dsession->lock); return; - error: if (reply) smlStatusUnref(reply); + smlSessionDispatchEvent(dsession->session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + smlTrace(TRACE_EXIT_ERROR, "%s: Unable to dispatch: %s", __func__, error->message); + g_error_free(error); g_mutex_unlock(dsession->lock); - smlTrace(TRACE_EXIT_ERROR, "%s: Unable to dispatch: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); } -SmlBool smlDsSessionCheck(SmlDsSession *dsession) +gboolean smlDsSessionCheck(SmlDsSession *dsession) { if ((dsession->alertCommand && dsession->recvAlertCallback) || \ (dsession->recvSync && dsession->recvSyncCallback) || \ @@ -728,7 +733,7 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, session, cmd, userdata); SmlDsSession *dsession = userdata; - SmlError *error = NULL; + GError *error = NULL; smlAssert(dsession->location); g_mutex_lock(dsession->lock); @@ -794,16 +799,16 @@ error: g_mutex_unlock(dsession->lock); - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); - return; + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); } void smlDsSessionRecvSync(SmlSession *session, SmlCommand *cmd, void *userdata) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, session, cmd, userdata); SmlDsSession *dsession = userdata; - SmlError *error = NULL; + GError *error = NULL; /* Create a write lock on the complete DsSession object to avoid race * conditions. If the write lock is already present then this is the @@ -863,8 +868,9 @@ error: g_mutex_unlock(dsession->lock); g_mutex_unlock(dsession->write_lock); - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); } void smlDsSessionRecvChange(SmlSession *session, SmlCommand *cmd, void *userdata) @@ -888,7 +894,7 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, session, cmd, userdata); SmlDsSession *dsession = userdata; - SmlError *error = NULL; + GError *error = NULL; g_mutex_lock(dsession->lock); @@ -932,8 +938,9 @@ error: g_mutex_unlock(dsession->lock); - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); } /** @brief Gets a already received alert @@ -974,7 +981,14 @@ * @param error A pointer to a error struct * @returns TRUE if the call was successful, FALSE otherwise */ -SmlBool smlDsSessionSendAlert(SmlDsSession *dsession, SmlAlertType type, const char *last, const char *next, SmlStatusReplyCb callback, void *userdata, SmlError **error) +gboolean +smlDsSessionSendAlert (SmlDsSession *dsession, + SmlAlertType type, + const gchar *last, + const gchar *next, + SmlStatusReplyCb callback, + void *userdata, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %s, %p)", __func__, dsession, type, VA_STRING(last), VA_STRING(next), error); smlAssert(dsession); @@ -994,9 +1008,8 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } @@ -1079,14 +1092,20 @@ * @param error A pointer to a error struct * @returns TRUE if the call was successful, FALSE otherwise */ -SmlBool smlDsSessionSendSync(SmlDsSession *dsession, unsigned int num_changes, SmlStatusReplyCb callback, void *userdata, SmlError **error) +gboolean +smlDsSessionSendSync (SmlDsSession *dsession, + gsize num_changes, + SmlStatusReplyCb callback, + void *userdata, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %p, %p, %p)", __func__, dsession, num_changes, callback, userdata, error); smlAssert(dsession); CHECK_ERROR_REF if (dsession->syncCommand) { - smlErrorSet(error, SML_ERROR_GENERIC, "There already was a sync command started"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, + "There already was a sync command started"); goto error; } @@ -1102,31 +1121,43 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } //Send a change to the remote side -SmlBool smlDsSessionQueueChange(SmlDsSession *dsession, SmlChangeType type, const char *uid, const char *data, unsigned int size, const char *contenttype, SmlDsSessionWriteCb callback, void *userdata, SmlError **error) +gboolean +smlDsSessionQueueChange (SmlDsSession *dsession, + SmlChangeType type, + const gchar *uid, + const gchar *data, + gsize size, + const gchar *contenttype, + SmlDsSessionWriteCb callback, + void *userdata, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %s, %p, %i, %s, %p, %p, %p)", __func__, dsession, type, VA_STRING(uid), data, size, VA_STRING(contenttype), callback, userdata, error); smlAssert(dsession); CHECK_ERROR_REF + SmlCommand *cmd = NULL; + SmlWriteContext *ctx = NULL; + if (!dsession->syncCommand) { - smlErrorSet(error, SML_ERROR_GENERIC, "You have to start a sync command first"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, + "You have to start a sync command first"); goto error; } - SmlCommand *cmd = smlCommandNewChange(type, uid, data, size, contenttype, error); + cmd = smlCommandNewChange(type, uid, data, size, contenttype, error); if (!cmd) goto error; - SmlWriteContext *ctx = smlTryMalloc0(sizeof(SmlWriteContext), error); + ctx = smlTryMalloc0(sizeof(SmlWriteContext), error); if (!ctx) - goto error_free_cmd; + goto error; ctx->callback = callback; ctx->userdata = userdata; @@ -1139,20 +1170,21 @@ g_mutex_unlock(dsession->pendingMapsLock); if (!smlSessionSendCommand(dsession->session, cmd, dsession->syncCommand, _change_reply, ctx, error)) - goto error_free_ctx; + goto error; + ctx = NULL; smlCommandUnref(cmd); smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - -error_free_ctx: - smlSafeCFree(&(ctx->uid)); - smlSafeFree((gpointer *)&ctx); -error_free_cmd: - smlCommandUnref(cmd); error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + if (ctx) { + smlSafeCFree(&(ctx->uid)); + smlSafeFree((gpointer *)&ctx); + } + if (cmd) + smlCommandUnref(cmd); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } @@ -1162,14 +1194,17 @@ * @param error A pointer to a error struct * @returns TRUE if the call was successful, FALSE otherwise */ -SmlBool smlDsSessionCloseSync(SmlDsSession *dsession, SmlError **error) +gboolean +smlDsSessionCloseSync (SmlDsSession *dsession, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, dsession, error); smlAssert(dsession); CHECK_ERROR_REF if (!dsession->syncCommand) { - smlErrorSet(error, SML_ERROR_GENERIC, "There already was a sync command started"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, + "There already was a sync command started"); goto error; } @@ -1181,13 +1216,16 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } -SmlBool smlDsSessionQueueMap(SmlDsSession *dsession, const char *uid, const char *newuid, SmlError **error) +gboolean +smlDsSessionQueueMap (SmlDsSession *dsession, + const gchar *uid, + const gchar *newuid, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, dsession, VA_STRING(uid), VA_STRING(newuid), error); smlAssert(dsession); @@ -1201,9 +1239,8 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } @@ -1216,7 +1253,11 @@ * @param error A pointer to a error struct * @returns TRUE if the call was successful, FALSE otherwise */ -SmlBool smlDsSessionCloseMap(SmlDsSession *dsession, SmlStatusReplyCb callback, void *userdata, SmlError **error) +gboolean +smlDsSessionCloseMap (SmlDsSession *dsession, + SmlStatusReplyCb callback, + void *userdata, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, dsession, callback, userdata, error); smlAssert(dsession); @@ -1234,28 +1275,27 @@ while (dsession->mapItems) { SmlMapItem *item = dsession->mapItems->data; if (!smlCommandAddMapItem(cmd, item, error)) - goto error_free_cmd; + goto error; smlMapItemUnref(item); dsession->mapItems = g_list_remove(dsession->mapItems, item); } if (!smlSessionSendCommand(dsession->session, cmd, NULL, callback, userdata, error)) - goto error_free_cmd; + goto error; smlCommandUnref(cmd); smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - -error_free_cmd: - smlCommandUnref(cmd); error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + if (cmd) + smlCommandUnref(cmd); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } -const char *smlDsSessionGetLocation(SmlDsSession *dsession) +const gchar *smlDsSessionGetLocation(SmlDsSession *dsession) { smlAssert(dsession); return smlDsServerGetLocation(dsession->server); @@ -1267,7 +1307,7 @@ return dsession->server; } -const char *smlDsSessionGetContentType(SmlDsSession *dsession) +const gchar *smlDsSessionGetContentType(SmlDsSession *dsession) { smlAssert(dsession); return smlDsServerGetContentType(dsession->server); @@ -1277,34 +1317,37 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, session, cmd, userdata); SmlDsServer *server = userdata; - SmlError *error = NULL; + GError *error = NULL; + /* The error is already signaled by smlDsServerRecvAlert. */ SmlDsSession *dsession = smlDsServerRecvAlert(server, session, cmd); if (!dsession) goto error; if (!smlManagerObjectRegister(server->manager, SML_COMMAND_TYPE_SYNC, session, server->location, NULL, NULL, smlDsSessionRecvSync, smlDsSessionRecvChange, dsession, &error)) - goto error_free_dsession; + goto error; if (!smlManagerObjectRegister(server->manager, SML_COMMAND_TYPE_MAP, session, server->location, NULL, NULL, smlDsSessionRecvMap, NULL, dsession, &error)) - goto error_free_dsession; + goto error; smlTrace(TRACE_EXIT, "%s", __func__); return; -error_free_dsession: - smlSafeFree((gpointer *)&dsession); error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - if (error) - smlErrorDeref(&error); + if (dsession) + smlSafeFree((gpointer *)&dsession); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error?error->message:"NULL"); + if (error) { + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + g_error_free(error); + } } static void _recv_manager_san(SmlSession *session, SmlCommand *cmd, void *userdata) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, session, cmd, userdata); SmlDsServer *server = userdata; - SmlError *error = NULL; + GError *error = NULL; /* ensure that the session is in client mode */ session->sessionType = SML_SESSION_TYPE_CLIENT; @@ -1330,17 +1373,6 @@ goto error; smlStatusUnref(reply); - } else if (server->sanCallback) { - SmlErrorType type = server->sanCallback(server, cmd->private.alert.type, server->sanCallbackUserdata); - - SmlStatus *reply = smlCommandNewReply(cmd, type, &error); - if (!reply) - goto error; - - if (!smlSessionSendReply(session, reply, &error)) - goto error; - - smlStatusUnref(reply); } else { smlTrace(TRACE_INTERNAL, "%s: SAN ignored", __func__); @@ -1358,12 +1390,15 @@ return; error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - if (error) - smlErrorDeref(&error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + smlSessionDispatchEvent(session, SML_SESSION_EVENT_ERROR, NULL, NULL, NULL, error); + g_error_free(error); } -SmlBool smlDsServerRegister(SmlDsServer *server, SmlManager *manager, SmlError **error) +gboolean +smlDsServerRegister (SmlDsServer *server, + SmlManager *manager, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, server, manager, error); smlAssert(server); @@ -1380,9 +1415,8 @@ smlTrace(TRACE_EXIT, "%s", __func__); return TRUE; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, (*error)->message); return FALSE; } Modified: trunk/libsyncml/objects/sml_ds_server.h ============================================================================== --- trunk/libsyncml/objects/sml_ds_server.h Wed Jul 8 11:19:54 2009 (r1156) +++ trunk/libsyncml/objects/sml_ds_server.h Wed Jul 8 12:22:14 2009 (r1157) @@ -1,7 +1,7 @@ /* * libsyncml - A syncml protocol implementation * Copyright (C) 2005 Armin Bauer <arm...@op...> - * Copyright (C) 2007 Michael Bell <mic...@op...> + * Copyright (C) 2007-2009 Michael Bell <mic...@op...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -38,54 +38,49 @@ SML_DS_EVENT_COMMITEDCHANGES = 1 } SmlDsEvent; -typedef void (* SmlDsSessionConnectCb) (SmlDsSession *dsession, void *userdata); -typedef gboolean (* SmlDsSessionAlertCb) (SmlDsSession *dsession, SmlAlertType type, const char *last, const char *next, void *userdata); -typedef void (* SmlDsSessionSyncCb) (SmlDsSession *dsession, unsigned int numchanges, void *userdata); -typedef void (* SmlDsSessionEventCb) (SmlDsSession *dsession, SmlDsEvent event, void *userdata); +typedef void (* SmlDsSessionConnectCb) (SmlDsSession *dsession, void *userdata); +typedef gboolean (* SmlDsSessionAlertCb) (SmlDsSession *dsession, SmlAlertType type, const gchar *last, const gchar *next, void *userdata); +typedef void (* SmlDsSessionSyncCb) (SmlDsSession *dsession, gsize numchanges, void *userdata); +typedef void (* SmlDsSessionEventCb) (SmlDsSession *dsession, SmlDsEvent event, void *userdata); typedef gboolean (* SmlDsSessionChangesCb) (SmlDsSession *dsession, SmlChangeType type, const gchar *uid, gchar *data, gsize size, const gchar *contenttype, void *userdata, GError **error); -typedef void (* SmlDsSessionWriteCb) (SmlDsSession *dsession, SmlStatus *status, void *userdata); +typedef void (* SmlDsSessionWriteCb) (SmlDsSession *dsession, SmlStatus *status, void *userdata); -SmlDsServer *smlDsServerNew(const char *type, SmlLocation *location, GError **error); -SmlDsServer *smlDsClientNew(const char *type, SmlLocation *location, SmlLocation *target, GError **error); -SmlDsServerType smlDsServerGetServerType(SmlDsServer *server); -void smlDsServerFree(SmlDsServer *server); -gboolean smlDsServerRegister(SmlDsServer *server, SmlManager *manager, GError **error); -gboolean smlDsServerAddSan(SmlDsServer *server, SmlNotification *san, GError **error); -void smlDsServerReset(SmlDsServer *server); -void smlDsServerSetConnectCallback(SmlDsServer *server, SmlDsSessionConnectCb callback, void *userdata); -const char *smlDsServerGetLocation(SmlDsServer *server); -const char *smlDsServerGetContentType(SmlDsServer *server); -SmlDsSession *smlDsServerSendAlert(SmlDsServer *server, SmlSession *session, SmlAlertType type, const char *last, const char *next, SmlStatusReplyCb callback, void *userdata, GError **error); - -SmlDsSession *smlDsSessionNew(SmlDsServer *server, SmlSession *session, GError **error); -SmlDsSession *smlDsSessionRef(SmlDsSession *dsession); -void smlDsSessionUnref(SmlDsSession *dsession); -void smlDsSessionDispatch(SmlDsSession *dsession); -gboolean smlDsSessionCheck(SmlDsSession *dsession); -void smlDsSessionGetAlert(SmlDsSession *dsession, SmlDsSessionAlertCb callback, void *userdata); -gboolean smlDsSessionSendAlert(SmlDsSession *dsession, SmlAlertType type, const char *last, const char *next, SmlStatusReplyCb callback, void *userdata, GError **error); -void smlDsSessionGetChanges(SmlDsSession *dsession, SmlDsSessionChangesCb chgCallback, void *userdata); -void smlDsSessionGetSync(SmlDsSession *dsession, SmlDsSessionSyncCb chgCallback, void *userdata); -void smlDsSessionGetEvent(SmlDsSession *dsession, SmlDsSessionEventCb eventCallback, void *userdata); -gboolean smlDsSessionSendSync(SmlDsSession *dsession, unsigned int num_changes, SmlStatusReplyCb callback, void *userdata, GError **error); -gboolean smlDsSessionQueueChange(SmlDsSession *dsession, SmlChangeType type, const char *uid, const char *data, unsigned int size, const char *contenttype, SmlDsSessionWriteCb callback, void *userdata, GError **error); -gboolean smlDsSessionCloseSync(SmlDsSession *dsession, GError **error); -gboolean smlDsSessionQueueMap(SmlDsSession *dsession, const char *uid, const char *newuid, GError **error); -gboolean smlDsSessionCloseMap(SmlDsSession *dsession, SmlStatusReplyCb callback, void *userdata, GError **error); -const char *smlDsSessionGetLocation(SmlDsSession *dsession); -const char *smlDsSessionGetContentType(SmlDsSession *dsession); -SmlDsServer *smlDsSessionGetServer(SmlDsSession *dsession); -SmlLocation *smlDsSessionGetTarget(SmlDsSession *dsession); +SmlDsServer* smlDsServerNew (const gchar *type, SmlLocation *location, GError **error); +SmlDsServer* smlDsClientNew (const gchar *type, SmlLocation *location, SmlLocation *target, GError **error); +SmlDsServerType smlDsServerGetServerType (SmlDsServer *server); +void smlDsServerFree (SmlDsServer *server); +gboolean smlDsServerRegister (SmlDsServer *server, SmlManager *manager, GError **error); +gboolean smlDsServerAddSan (SmlDsServer *server, SmlNotification *san, GError **error); +void smlDsServerReset (SmlDsServer *server); +void smlDsServerSetConnectCallback (SmlDsServer *server, SmlDsSessionConnectCb callback, void *userdata); +const gchar* smlDsServerGetLocation (SmlDsServer *server); +const gchar* smlDsServerGetContentType (SmlDsServer *server); +SmlDsSession* smlDsServerSendAlert (SmlDsServer *server, SmlSession *session, SmlAlertType type, const gchar *last, const gchar *next, SmlStatusReplyCb callback, void *userdata, GError **error); + +SmlDsSession* smlDsSessionNew (SmlDsServer *server, SmlSession *session, GError **error); +SmlDsSession* smlDsSessionRef (SmlDsSession *dsession); +void smlDsSessionUnref (SmlDsSession *dsession); +void smlDsSessionDispatch (SmlDsSession *dsession); +gboolean smlDsSessionCheck (SmlDsSession *dsession); +void smlDsSessionGetAlert (SmlDsSession *dsession, SmlDsSessionAlertCb callback, void *userdata); +gboolean smlDsSessionSendAlert (SmlDsSession *dsession, SmlAlertType type, const gchar *last, const gchar *next, SmlStatusReplyCb callback, void *userdata, GError **error); +void smlDsSessionGetChanges (SmlDsSession *dsession, SmlDsSessionChangesCb chgCallback, void *userdata); +void smlDsSessionGetSync (SmlDsSession *dsession, SmlDsSessionSyncCb chgCallback, void *userdata); +void smlDsSessionGetEvent (SmlDsSession *dsession, SmlDsSessionEventCb eventCallback, void *userdata); +gboolean smlDsSessionSendSync (SmlDsSession *dsession, gsize num_changes, SmlStatusReplyCb callback, void *userdata, GError **error); +gboolean smlDsSessionQueueChange (SmlDsSession *dsession, SmlChangeType type, const gchar *uid, const gchar *data, gsize size, const gchar *contenttype, SmlDsSessionWriteCb callback, void *userdata, GError **error); +gboolean smlDsSessionCloseSync (SmlDsSession *dsession, GError **error); +gboolean smlDsSessionQueueMap (SmlDsSession *dsession, const gchar *uid, const gchar *newuid, GError **error); +gboolean smlDsSessionCloseMap (SmlDsSession *dsession, SmlStatusReplyCb callback, void *userdata, GError **error); +const gchar* smlDsSessionGetLocation (SmlDsSession *dsession); +const gchar* smlDsSessionGetContentType (SmlDsSession *dsession); +SmlDsServer* smlDsSessionGetServer (SmlDsSession *dsession); +SmlLocation* smlDsSessionGetTarget (SmlDsSession *dsession); /* multi session safe SAN handling */ typedef SmlErrorType (* SmlDsServerSanSessionCb) (SmlDsServer *dsserver, SmlSession *session, SmlAlertType type, void *userdata); -void smlDsServerSetSanSessionCallback(SmlDsServer *server, SmlDsServerSanSessionCb callback, void *userdata); - -/* deprecated SAN handling */ - -typedef SmlErrorType (* SmlDsServerSanCb) (SmlDsServer *dsserver, SmlAlertType type, void *userdata); -void smlDsServerSetSanCallback(SmlDsServer *server, SmlDsServerSanCb callback, void *userdata) LIBSYNCML_DEPRECATED; +void smlDsServerSetSanSessionCallback (SmlDsServer *server, SmlDsServerSanSessionCb callback, void *userdata); #endif //_SML_DS_SERVER_H_ /*@}*/ Modified: trunk/libsyncml/objects/sml_ds_server_internals.h ============================================================================== --- trunk/libsyncml/objects/sml_ds_server_internals.h Wed Jul 8 11:19:54 2009 (r1156) +++ trunk/libsyncml/objects/sml_ds_server_internals.h Wed Jul 8 12:22:14 2009 (r1157) @@ -1,7 +1,7 @@ /* * libsyncml - A syncml protocol implementation * Copyright (C) 2005 Armin Bauer <arm...@op...> - * Copyright (C) 2008 Michael Bell <mic...@op...> + * Copyright (C) 2008-2009 Michael Bell <mic...@op...> * * This library is free software; you can redistribute it and/or * modify it under the terms of the GNU Lesser General Public @@ -34,8 +34,8 @@ typedef struct SmlWriteContext { SmlDsSessionWriteCb callback; - char *uid; - char *newuid; + gchar *uid; + gchar *newuid; SmlStatus *status; void *userdata; SmlChangeType type; @@ -72,8 +72,8 @@ GList *recvSync; GList *recvChanges; SmlErrorType syncReply; - GError finalLock; - GError emptySync; + SmlBool finalLock; + SmlBool emptySync; /** Callback that will receive the reply to the sync command */ SmlStatusReplyCb sentSyncCallback; @@ -102,7 +102,7 @@ SmlLocation *location; /** The target if the ds server is in client mode */ SmlLocation *target; - char *contenttype; + gchar *contenttype; SmlDsServerType servertype; SmlManager *manager; @@ -112,20 +112,18 @@ SmlDsServerSanSessionCb sanSessionCallback; void *sanSessionCallbackUserdata; - SmlDsServerSanCb sanCallback; - void *sanCallbackUserdata; }; -void smlDsSessionRecvAlert(SmlSession *session, SmlCommand *cmd, void *userdata); -void smlDsSessionRecvSync(SmlSession *session, SmlCommand *cmd, void *userdata); -void smlDsSessionRecvChange(SmlSession *session, SmlCommand *cmd, void *userdata); -void smlDsSessionRecvMap(SmlSession *session, SmlCommand *cmd, void *userdata); -SmlDsSession *smlDsServerRecvAlert(SmlDsServer *server, SmlSession *session, SmlCommand *cmd); +void smlDsSessionRecvAlert (SmlSession *session, SmlCommand *cmd, void *userdata); +void smlDsSessionRecvSync (SmlSession *session, SmlCommand *cmd, void *userdata); +void smlDsSessionRecvChange (SmlSession *session, SmlCommand *cmd, void *userdata); +void smlDsSessionRecvMap (SmlSession *session, SmlCommand *cmd, void *userdata); +SmlDsSession* smlDsServerRecvAlert (SmlDsServer *server, SmlSession *session, SmlCommand *cmd); -SmlDsSession *smlDsSessionNew(SmlDsServer *server, SmlSession *session, GError **error); -void smlDsSessionFree(SmlDsSession *dsession); +SmlDsSession* smlDsSessionNew (SmlDsServer *server, SmlSession *session, GError **error); +void smlDsSessionFree (SmlDsSession *dsession); -void smlDsSessionGetMapping(SmlDsSession *dsession, SmlDsSessionMapCb mapCallback, void *userdata); +void smlDsSessionGetMapping (SmlDsSession *dsession, SmlDsSessionMapCb mapCallback, void *userdata); #endif //_SML_DS_SERVER_INTERNALS_H_ /*@}*/ |