summaryrefslogtreecommitdiff
path: root/gweb
diff options
context:
space:
mode:
authorMarcel Holtmann <marcel@holtmann.org>2010-07-31 15:10:06 -0700
committerMarcel Holtmann <marcel@holtmann.org>2010-07-31 15:10:06 -0700
commit2a3855c57fbe42e3f9f26bc6b08a09f6471370ea (patch)
tree0320158b19796614476d9eb66d1b3c451c604573 /gweb
parent54960fa52a4a890e127b5b58256acb702ba7839d (diff)
downloadconnman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.tar.gz
connman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.tar.bz2
connman-2a3855c57fbe42e3f9f26bc6b08a09f6471370ea.zip
Add skeleton for web service library
Diffstat (limited to 'gweb')
-rw-r--r--gweb/gweb.c95
-rw-r--r--gweb/gweb.h48
2 files changed, 143 insertions, 0 deletions
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 */