diff options
author | Marcel Holtmann <marcel@holtmann.org> | 2010-07-31 15:10:06 -0700 |
---|---|---|
committer | Marcel Holtmann <marcel@holtmann.org> | 2010-07-31 15:10:06 -0700 |
commit | 2a3855c57fbe42e3f9f26bc6b08a09f6471370ea (patch) | |
tree | 0320158b19796614476d9eb66d1b3c451c604573 | |
parent | 54960fa52a4a890e127b5b58256acb702ba7839d (diff) | |
download | connman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.tar.gz connman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.tar.bz2 connman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.zip |
Add skeleton for web service library
-rw-r--r-- | Makefile.am | 6 | ||||
-rw-r--r-- | gweb/gweb.c | 95 | ||||
-rw-r--r-- | gweb/gweb.h | 48 |
3 files changed, 147 insertions, 2 deletions
diff --git a/Makefile.am b/Makefile.am index 9b466445..28a2b979 100644 --- a/Makefile.am +++ b/Makefile.am @@ -29,6 +29,8 @@ gdhcp_sources = gdhcp/gdhcp.h gdhcp/common.h gdhcp/common.c gdhcp/client.c gresolv_sources = gresolv/gresolv.h gresolv/gresolv.c +gweb_sources = gweb/gweb.h gweb/gweb.c + if DATAFILES dbusdir = @DBUS_DATADIR@ @@ -48,8 +50,8 @@ noinst_PROGRAMS = sbin_PROGRAMS = src/connmand -src_connmand_SOURCES = $(gdbus_sources) $(gdhcp_sources) \ - $(gresolv_sources) $(builtin_sources) \ +src_connmand_SOURCES = $(gdbus_sources) $(gdhcp_sources) $(gresolv_sources) \ + $(gweb_sources) $(builtin_sources) \ src/main.c src/connman.h src/log.c src/selftest.c \ src/error.c src/plugin.c src/task.c src/element.c \ src/device.c src/network.c src/connection.c \ diff --git a/gweb/gweb.c b/gweb/gweb.c new file mode 100644 index 00000000..2dda02b7 --- /dev/null +++ b/gweb/gweb.c @@ -0,0 +1,95 @@ +/* + * + * Web service library with GLib integration + * + * Copyright (C) 2009-2010 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifdef HAVE_CONFIG_H +#include <config.h> +#endif + +#include <stdio.h> +#include <string.h> + +#include "gweb.h" + +struct _GWeb { + gint ref_count; + + GWebDebugFunc debug_func; + gpointer debug_data; +}; + +static inline void debug(GWeb *web, const char *format, ...) +{ + char str[256]; + va_list ap; + + if (web->debug_func == NULL) + return; + + va_start(ap, format); + + if (vsnprintf(str, sizeof(str), format, ap) > 0) + web->debug_func(str, web->debug_data); + + va_end(ap); +} + +GWeb *g_web_new(void) +{ + GWeb *web; + + web = g_try_new0(GWeb, 1); + if (web == NULL) + return NULL; + + web->ref_count = 1; + + return web; +} + +GWeb *g_web_ref(GWeb *web) +{ + if (web == NULL) + return NULL; + + g_atomic_int_inc(&web->ref_count); + + return web; +} + +void g_web_unref(GWeb *web) +{ + if (web == NULL) + return; + + if (g_atomic_int_dec_and_test(&web->ref_count) == FALSE) + return; + + g_free(web); +} + +void g_web_set_debug(GWeb *web, GWebDebugFunc func, gpointer user_data) +{ + if (web == NULL) + return; + + web->debug_func = func; + web->debug_data = user_data; +} diff --git a/gweb/gweb.h b/gweb/gweb.h new file mode 100644 index 00000000..c0814310 --- /dev/null +++ b/gweb/gweb.h @@ -0,0 +1,48 @@ +/* + * + * Web service library with GLib integration + * + * Copyright (C) 2009-2010 Intel Corporation. All rights reserved. + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License version 2 as + * published by the Free Software Foundation. + * + * This program is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the + * GNU General Public License for more details. + * + * You should have received a copy of the GNU General Public License + * along with this program; if not, write to the Free Software + * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + * + */ + +#ifndef __G_WEB_H +#define __G_WEB_H + +#include <glib.h> + +#ifdef __cplusplus +extern "C" { +#endif + +struct _GWeb; + +typedef struct _GWeb GWeb; + +typedef void (*GWebDebugFunc)(const char *str, gpointer user_data); + +GWeb *g_web_new(void); + +GWeb *g_web_ref(GWeb *web); +void g_web_unref(GWeb *web); + +void g_web_set_debug(GWeb *web, GWebDebugFunc func, gpointer user_data); + +#ifdef __cplusplus +} +#endif + +#endif /* __G_WEB_H */ |