Add skeleton for web service library
authorMarcel Holtmann <marcel@holtmann.org>
Sat, 31 Jul 2010 22:10:06 +0000 (15:10 -0700)
committerMarcel Holtmann <marcel@holtmann.org>
Sat, 31 Jul 2010 22:10:06 +0000 (15:10 -0700)
Makefile.am
gweb/gweb.c [new file with mode: 0644]
gweb/gweb.h [new file with mode: 0644]

index 9b46644..28a2b97 100644 (file)
@@ -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 (file)
index 0000000..2dda02b
--- /dev/null
@@ -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 (file)
index 0000000..c081431
--- /dev/null
@@ -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 */