From: <svn...@op...> - 2009-07-09 11:57:13
|
Author: bellmich Date: Thu Jul 9 13:57:04 2009 New Revision: 1163 URL: http://libsyncml.opensync.org/changeset/1163 Log: migrated transports/obex_server from SmlError to GError Modified: trunk/libsyncml/CMakeLists.txt trunk/libsyncml/sml_error.c trunk/libsyncml/sml_error.h trunk/libsyncml/transports/obex_server.c trunk/libsyncml/transports/obex_server_internals.h Modified: trunk/libsyncml/CMakeLists.txt ============================================================================== --- trunk/libsyncml/CMakeLists.txt Thu Jul 9 12:34:31 2009 (r1162) +++ trunk/libsyncml/CMakeLists.txt Thu Jul 9 13:57:04 2009 (r1163) @@ -44,8 +44,8 @@ SET( libsyncml_LIB_SRCS ${libsyncml_LIB_SRCS} transports/obex_client.c - transports/obex_server.c transports/obex_client_samsung.c + transports/obex_server.c transports/obex.c ) ENDIF ( ENABLE_OBEX ) Modified: trunk/libsyncml/sml_error.c ============================================================================== --- trunk/libsyncml/sml_error.c Thu Jul 9 12:34:31 2009 (r1162) +++ trunk/libsyncml/sml_error.c Thu Jul 9 13:57:04 2009 (r1163) @@ -265,7 +265,7 @@ * @returns TRUE if the error is set, FALSE otherwise * */ -SmlBool smlErrorIsSet(SmlError **error) +static gboolean smlErrorIsSet(GError **error) { if (!error) return FALSE; @@ -379,15 +379,15 @@ * @returns The error class * */ -SmlErrorClass smlErrorGetClass(SmlError **error) +SmlErrorClass smlErrorGetClass(GError **error) { if (!smlErrorIsSet(error)) return SML_ERRORCLASS_SUCCESS; - if ((*error)->type == SML_NO_ERROR) + if ((*error)->code == SML_NO_ERROR) return SML_ERRORCLASS_SUCCESS; - return (int)((*error)->type / 100); + return (int)((*error)->code / 100); } /*@}*/ Modified: trunk/libsyncml/sml_error.h ============================================================================== --- trunk/libsyncml/sml_error.h Thu Jul 9 12:34:31 2009 (r1162) +++ trunk/libsyncml/sml_error.h Thu Jul 9 13:57:04 2009 (r1163) @@ -22,7 +22,7 @@ #ifndef _SML_ERROR_H_ #define _SML_ERROR_H_ -#include <libsyncml/syncml.h> +#include <glib.h> typedef enum { SML_ERRORCLASS_UNKNOWN = 0, @@ -113,4 +113,6 @@ } SmlErrorType; +SmlErrorClass smlErrorGetClass(GError **error); + #endif //_SML_ERROR_H_ Modified: trunk/libsyncml/transports/obex_server.c ============================================================================== --- trunk/libsyncml/transports/obex_server.c Thu Jul 9 12:34:31 2009 (r1162) +++ trunk/libsyncml/transports/obex_server.c Thu Jul 9 13:57:04 2009 (r1163) @@ -45,13 +45,13 @@ int result = OBEX_HandleInput(linkenv->handle, 0); if (result < 0) { - SmlError *error = NULL; - smlErrorSet(&error, SML_ERROR_GENERIC, + GError *error = NULL; + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "The handling of the obex input failed (%i).", result); smlTransportReceiveEvent(linkenv->env->tsp, linkenv->link, SML_TRANSPORT_EVENT_ERROR, NULL, error); - smlTrace(TRACE_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlTrace(TRACE_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); return FALSE; } @@ -93,7 +93,7 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p, %i, %i, %i, %i)", __func__, handle, object, mode, event, obex_cmd, obex_rsp); SmlLinkObexServerEnv *linkenv = OBEX_GetUserData(handle); - SmlError *error = NULL; + GError *error = NULL; obex_headerdata_t header; uint8_t headertype = 0; uint32_t len = 0; @@ -171,7 +171,7 @@ /*char *mimetypestr = g_malloc0(len);// / 2 + 1); if (OBEX_UnicodeToChar((unsigned char *)mimetypestr, header.bs, len / 2 + 1) == -1) { smlSafeCFree(&mimetypestr); - smlErrorSet(&error, SML_ERROR_GENERIC, "unable to convert from unicode"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "unable to convert from unicode"); goto error; }*/ @@ -185,7 +185,7 @@ mimetype = SML_MIMETYPE_SAN; } else { smlSafeCFree(&mimetypestr); - smlErrorSet(&error, SML_ERROR_GENERIC, "Unknown mime type"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Unknown mime type"); goto error; } @@ -197,7 +197,7 @@ break; case OBEX_HDR_BODY: if (!length) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Length must come before the body"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Length must come before the body"); goto error; } @@ -221,27 +221,27 @@ } if (!conid) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing connection id"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing connection id"); goto error; } if (conid != linkenv->conid) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Wrong connection id"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Wrong connection id"); goto error; } if (mimetype == SML_MIMETYPE_UNKNOWN) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing mime type"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing mime type"); goto error; } if (!length) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing length"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing length"); goto error; } if (!body) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing body"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing body"); goto error; } @@ -271,7 +271,7 @@ /*char *mimetypestr = g_malloc0(len / 2 + 1); if (OBEX_UnicodeToChar((unsigned char *)mimetypestr, header.bs, len / 2 + 1) == -1) { smlSafeCFree(&mimetypestr); - smlErrorSet(&error, SML_ERROR_GENERIC, "unable to convert from unicode"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "unable to convert from unicode"); goto error; }*/ @@ -285,7 +285,7 @@ mimetype = SML_MIMETYPE_SAN; } else { smlSafeCFree(&mimetypestr); - smlErrorSet(&error, SML_ERROR_GENERIC, "Unknown mime type"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Unknown mime type"); goto error; } @@ -297,17 +297,17 @@ } if (!conid) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing connection id"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing connection id"); goto error; } if (conid != linkenv->conid) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Wrong connection id"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Wrong connection id"); goto error; } if (mimetype == SML_MIMETYPE_UNKNOWN) { - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing mime type"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing mime type"); goto error; } @@ -317,19 +317,19 @@ else OBEX_ObjectSetRsp(object, OBEX_RSP_FORBIDDEN, OBEX_RSP_FORBIDDEN); - smlErrorDeref(&(linkenv->error)); + g_error_free(linkenv->error); linkenv->error = NULL; smlTrace(TRACE_INTERNAL, "%s: Sent error in response to get", __func__); break; } if (!linkenv->send_data) { - smlErrorSet(&error, SML_ERROR_GENERIC, "No data to send"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "No data to send"); goto error; } if (mimetype != linkenv->send_data->type) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Wrong mimetype %d requested. %d was expected.", mimetype, linkenv->send_data->type); goto error; @@ -365,7 +365,7 @@ if (!target || strcmp(target, "SYNCML-SYNC")) { smlSafeCFree(&target); - smlErrorSet(&error, SML_ERROR_GENERIC, "Missing target"); + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Missing target"); goto error; } smlSafeCFree(&target); @@ -412,10 +412,9 @@ error: OBEX_ObjectSetRsp(object, OBEX_RSP_BAD_REQUEST, OBEX_RSP_BAD_REQUEST); - smlErrorRef(&error); smlTransportReceiveEvent(linkenv->env->tsp, linkenv->link, SML_TRANSPORT_EVENT_ERROR, NULL, error); - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); } static void _smlTransportObexServerMainEvent(obex_t *handle, obex_object_t *object, int mode, int event, int obex_cmd, int obex_rsp) @@ -423,7 +422,7 @@ smlTrace(TRACE_ENTRY, "%s(%p, %p, %i, %i, %i, %i)", __func__, handle, object, mode, event, obex_cmd, obex_rsp); SmlTransportObexServerEnv *env = OBEX_GetUserData(handle); - SmlError *error = NULL; + GError *error = NULL; SmlLinkObexServerEnv *linkenv = NULL; switch (event) { @@ -438,7 +437,7 @@ linkenv->handle = OBEX_ServerAccept(env->handle, _smlTransportObexServerLinkEvent, linkenv); if (!linkenv->handle) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "OBEX_ServerAccept failed."); smlSafeFree((gpointer *)&linkenv); goto error; @@ -461,7 +460,7 @@ break; default: - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "Unknown OBEX event %d.", event); goto error; break; @@ -472,10 +471,9 @@ error: OBEX_ObjectSetRsp(object, OBEX_RSP_BAD_REQUEST, OBEX_RSP_BAD_REQUEST); - smlErrorRef(&error); smlTransportReceiveEvent(env->tsp, NULL, SML_TRANSPORT_EVENT_ERROR, NULL, error); - smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(&error)); - smlErrorDeref(&error); + smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, error->message); + g_error_free(error); } /* These function supervise the file descriptor where we are listening for incoming @@ -517,18 +515,18 @@ { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p)", __func__, source, callback, user_data); SmlTransportObexServerEnv *env = user_data; - SmlError *error = NULL; + GError *error = NULL; /* this is a non-locking function */ int result = OBEX_HandleInput(env->handle, 0); if (result < 0) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "OBEX_HandleInput on main handle returned %d.", result); goto error; } if (result == 0) { - smlErrorSet(&error, SML_ERROR_GENERIC, + g_set_error(&error, SML_ERROR, SML_ERROR_GENERIC, "OBEX_HandleInput on main handle get a timeout."); goto error; } @@ -537,15 +535,16 @@ return TRUE; error: smlTransportReceiveEvent(env->tsp, NULL, SML_TRANSPORT_EVENT_ERROR, NULL, error); - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, error->message); + g_error_free(error); return FALSE; } -static SmlBool smlTransportObexServerSetConfigOption( - SmlTransport *tsp, - const char *name, - const char *value, - SmlError **error) +static gboolean +smlTransportObexServerSetConfigOption (SmlTransport *tsp, + const gchar *name, + const gchar *value, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %s, %s, %p)", __func__, tsp, VA_STRING(name), VA_STRING(value), error); CHECK_ERROR_REF @@ -560,14 +559,14 @@ #ifdef ENABLE_BLUETOOTH int code = str2ba(value, env->bdaddr); if (code != 0) { - smlErrorSet(error, SML_ERROR_INTERNAL_MISCONFIGURATION, + g_set_error(error, SML_ERROR, SML_ERROR_INTERNAL_MISCONFIGURATION, "Bluetooth MAC cannot be interpreted (%d).", code); goto error; } smlTrace(TRACE_INTERNAL, "%s: Bluetooth MAC %s detected", __func__, VA_STRING(value)); #else - smlErrorSet(error, SML_ERROR_GENERIC, "Bluetooth not enabled"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Bluetooth not enabled"); goto error; #endif } else if (!strcmp(name, SML_TRANSPORT_CONFIG_BLUETOOTH_CHANNEL)) { @@ -579,7 +578,7 @@ smlTrace(TRACE_INTERNAL, "%s: IRDA service %s detected", __func__, VA_STRING(env->irda_service)); } else { - smlErrorSet(error, SML_ERROR_INTERNAL_MISCONFIGURATION, + g_set_error(error, SML_ERROR, SML_ERROR_INTERNAL_MISCONFIGURATION, "Unknown parameter %s found.", name); goto error; } @@ -587,14 +586,14 @@ smlTrace(TRACE_EXIT, "%s - TRUE", __func__); return TRUE; error: - smlTrace(TRACE_EXIT, "%s - %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT, "%s - %s", __func__, (*error)->message); return FALSE; } -static SmlBool smlTransportObexServerSetConnectionType( - SmlTransport *tsp, - SmlTransportConnectionType type, - SmlError **error) +static gboolean +smlTransportObexServerSetConnectionType (SmlTransport *tsp, + SmlTransportConnectionType type, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %i, %p)", __func__, tsp, type, error); CHECK_ERROR_REF @@ -608,7 +607,9 @@ return TRUE; } -static SmlBool smlTransportObexServerInit(SmlTransport *tsp, SmlError **error) +static gboolean +smlTransportObexServerInit (SmlTransport *tsp, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, tsp, error); CHECK_ERROR_REF @@ -625,7 +626,7 @@ _smlTransportObexServerMainEvent, OBEX_FL_KEEPSERVER); if (!env->handle) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to create OBEX IRDA transport."); goto error; } @@ -643,7 +644,7 @@ /* register server */ if (GET_OBEX_RESULT(TcpOBEX_ServerRegister(env->handle, (struct sockaddr *) addr, size)) < 0) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to register INET OBEX server. %s (%i).", strerror(errno), errno); smlSafeFree((gpointer *)&addr); @@ -658,7 +659,7 @@ _smlTransportObexServerMainEvent, OBEX_FL_KEEPSERVER); if (!env->handle) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to create OBEX IRDA transport."); goto error; } @@ -666,7 +667,7 @@ /* register server */ if (GET_OBEX_RESULT(IrOBEX_ServerRegister(env->handle, env->irda_service))) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to register IRDA OBEX server. %s (%i).", strerror(errno), errno); goto error; @@ -679,7 +680,7 @@ _smlTransportObexServerMainEvent, OBEX_FL_KEEPSERVER); if (!env->handle) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to create OBEX Bluetooth transport."); goto error; } @@ -687,18 +688,18 @@ /* register server */ if (GET_OBEX_RESULT(BtOBEX_ServerRegister(env->handle, env->bdaddr, env->port)) < 0) { - smlErrorSet(error, SML_ERROR_GENERIC, + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unable to register Bluetooth OBEX server. %s (%i).", strerror(errno), errno); goto error; } #else - smlErrorSet(error, SML_ERROR_GENERIC, "Bluetooth not enabled"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Bluetooth not enabled"); goto error; #endif break; default: - smlErrorSet(error, SML_ERROR_GENERIC, "Unknown obex type"); + g_set_error(error, SML_ERROR, SML_ERROR_GENERIC, "Unknown obex type"); goto error; } smlTrace(TRACE_INTERNAL, "%s: server registered successfully", __func__); @@ -730,11 +731,13 @@ } if (env) smlSafeFree((gpointer *)&env); - smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, smlErrorPrint(error)); + smlTrace(TRACE_EXIT_ERROR, "%s - %s", __func__, (*error)->message); return FALSE; } -static SmlBool smlTransportObexServerFinalize(void *data, SmlError **error) +static gboolean +smlTransportObexServerFinalize (void *data, + GError **error) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, data, error); CHECK_ERROR_REF @@ -770,7 +773,11 @@ return TRUE; } -static void smlTransportObexServerSend(void *userdata, void *linkdata, SmlTransportData *data, SmlError *error) +static void +smlTransportObexServerSend (void *userdata, + void *linkdata, + SmlTransportData *data, + GError *error) { smlTrace(TRACE_ENTRY, "%s(%p, %p, %p, %p)", __func__, userdata, linkdata, data, error); smlAssert(data || error); @@ -778,13 +785,13 @@ // Unused: SmlTransportObexServerEnv *env = userdata; SmlLinkObexServerEnv *linkenv = linkdata; smlAssert(linkenv); - SmlError *local_error = NULL; + GError *local_error = NULL; if (linkdata == NULL) { /* send is called before connect succeeded or * the user of the library ignored the link */ - smlErrorSet(&local_error, SML_ERROR_GENERIC, + g_set_error(&local_error, SML_ERROR, SML_ERROR_GENERIC, "The OBEX server tries to send before a connection with a client was established or the link was ignored."); goto error; } @@ -798,7 +805,7 @@ } if (linkenv->send_data) { - smlErrorSet(&local_error, SML_ERROR_GENERIC, "We already have waiting data"); + g_set_error(&local_error, SML_ERROR, SML_ERROR_GENERIC, "We already have waiting data"); goto error; } @@ -807,15 +814,15 @@ smlTrace(TRACE_EXIT, "%s", __func__); return; - error: - smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, smlErrorPrint(&local_error)); + smlTrace(TRACE_EXIT_ERROR, "%s: %s", __func__, local_error->message); smlTransportReceiveEvent(linkenv->env->tsp, linkenv->link, SML_TRANSPORT_EVENT_ERROR, NULL, local_error); - smlErrorDeref(&local_error); + g_error_free(local_error); return; } -static void smlTransportObexServerDisconnect(void *data, void *linkdata) +static void +smlTransportObexServerDisconnect(void *data, void *linkdata) { smlTrace(TRACE_ENTRY, "%s(%p, %p)", __func__, data, linkdata); smlAssert(data); @@ -835,7 +842,9 @@ return; } -SmlBool smlTransportObexServerNew(SmlTransport *tsp, SmlError **error) +gboolean +smlTransportObexServerNew (SmlTransport *tsp, + GError **error) { CHECK_ERROR_REF smlAssert(tsp); Modified: trunk/libsyncml/transports/obex_server_internals.h ============================================================================== --- trunk/libsyncml/transports/obex_server_internals.h Thu Jul 9 12:34:31 2009 (r1162) +++ trunk/libsyncml/transports/obex_server_internals.h Thu Jul 9 13:57:04 2009 (r1163) @@ -30,12 +30,12 @@ typedef struct SmlTransportObexServerEnv { SmlTransportConnectionType type; SmlTransport *tsp; - char *path; + gchar *path; uint16_t port; #ifdef ENABLE_BLUETOOTH bdaddr_t *bdaddr; #endif - char *irda_service; + gchar *irda_service; obex_t *handle; @@ -51,10 +51,10 @@ uint32_t conid; obex_t *handle; uint8_t *stream_chunk; - SmlBool destroy; - SmlBool disconnect; + gboolean destroy; + gboolean disconnect; GSource *source; - SmlError *error; + GError *error; SmlTransportData *send_data; } SmlLinkObexServerEnv; |