[evolution-data-server] Added EDataBookDirect & generated D-Bus counterpart.
- From: Tristan Van Berkom <tvb src gnome org>
- To: commits-list gnome org
- Cc:
- Subject: [evolution-data-server] Added EDataBookDirect & generated D-Bus counterpart.
- Date: Fri, 15 Feb 2013 09:47:20 +0000 (UTC)
commit 4be7d7511a36adbd28f4a067862d5c742714dd8d
Author: Tristan Van Berkom <tristanvb openismus com>
Date: Fri Feb 15 17:49:13 2013 +0900
Added EDataBookDirect & generated D-Bus counterpart.
The EDataBookDirect is the server side wrapper allowing backends
to report information about thier direct read access support.
addressbook/libedata-book/Makefile.am | 2 +
addressbook/libedata-book/e-data-book-direct.c | 132 ++++++++++++++++++++
addressbook/libedata-book/e-data-book-direct.h | 64 ++++++++++
addressbook/libedata-book/libedata-book.h | 1 +
private/Makefile.am | 17 +++
.../org.gnome.evolution.dataserver.DirectBook.xml | 19 +++
6 files changed, 235 insertions(+), 0 deletions(-)
---
diff --git a/addressbook/libedata-book/Makefile.am b/addressbook/libedata-book/Makefile.am
index eb9e1d7..7f719db 100644
--- a/addressbook/libedata-book/Makefile.am
+++ b/addressbook/libedata-book/Makefile.am
@@ -30,6 +30,7 @@ libedata_book_1_2_la_SOURCES = \
e-book-backend-sync.c \
e-book-backend.c \
e-data-book.c \
+ e-data-book-direct.c \
e-data-book-factory.c \
e-data-book-view.c \
ximian-vcard.h
@@ -61,6 +62,7 @@ libedata_bookinclude_HEADERS = \
e-data-book-factory.h \
e-data-book-view.h \
e-data-book.h \
+ e-data-book-direct.h \
e-book-backend-cache.h \
e-book-backend-sqlitedb.h \
e-book-backend-db-cache.h
diff --git a/addressbook/libedata-book/e-data-book-direct.c b/addressbook/libedata-book/e-data-book-direct.c
new file mode 100644
index 0000000..6ed2a49
--- /dev/null
+++ b/addressbook/libedata-book/e-data-book-direct.c
@@ -0,0 +1,132 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2012 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ * Author: Tristan Van Berkom <tristanvb openismus com>
+ */
+
+#ifdef HAVE_CONFIG_H
+#include <config.h>
+#endif
+
+#include <string.h>
+
+#include <e-dbus-direct-book.h>
+#include "e-data-book-direct.h"
+
+#define E_DATA_BOOK_DIRECT_GET_PRIVATE(obj) \
+ (G_TYPE_INSTANCE_GET_PRIVATE \
+ ((obj), E_TYPE_DATA_BOOK_DIRECT, EDataBookDirectPrivate))
+
+G_DEFINE_TYPE (EDataBookDirect, e_data_book_direct, G_TYPE_OBJECT);
+#define THRESHOLD_ITEMS 32 /* how many items can be hold in a cache, before propagated to UI */
+#define THRESHOLD_SECONDS 2 /* how long to wait until notifications are propagated to UI; in seconds */
+
+struct _EDataBookDirectPrivate {
+ EDBusDirectBook *gdbus_object;
+};
+
+/* GObjectClass */
+static void
+e_data_book_direct_dispose (GObject *object)
+{
+ EDataBookDirect *direct = E_DATA_BOOK_DIRECT (object);
+
+ if (direct->priv->gdbus_object) {
+ g_dbus_interface_skeleton_unexport (G_DBUS_INTERFACE_SKELETON (direct->priv->gdbus_object));
+ g_object_unref (direct->priv->gdbus_object);
+ direct->priv->gdbus_object = NULL;
+ }
+
+ G_OBJECT_CLASS (e_data_book_direct_parent_class)->dispose (object);
+}
+
+static void
+e_data_book_direct_init (EDataBookDirect *direct)
+{
+ direct->priv = E_DATA_BOOK_DIRECT_GET_PRIVATE (direct);
+ direct->priv->gdbus_object = e_dbus_direct_book_skeleton_new ();
+}
+
+static void
+e_data_book_direct_class_init (EDataBookDirectClass *class)
+{
+ GObjectClass *object_class = G_OBJECT_CLASS (class);
+
+ g_type_class_add_private (class, sizeof (EDataBookDirectPrivate));
+
+ object_class->dispose = e_data_book_direct_dispose;
+}
+
+/**
+ * e_data_book_direct_new:
+ * @backend_path: Full path to the installed backend shared library
+ * @backend_factory_name: Type name of the EBookBackendFactory implemented by the library
+ * @config: A backend specific configuration string
+ *
+ * Creates a #EDataBookDirect to report configuration data needed for direct
+ * read access.
+ *
+ * This is returned by e_book_backend_get_direct_book() for backends
+ * which support direct read access mode.
+ *
+ * Returns: (transfer full): A newly created #EDataBookDirect
+ *
+ * Since: 3.8
+ */
+EDataBookDirect *
+e_data_book_direct_new (const gchar *backend_path,
+ const gchar *backend_factory_name,
+ const gchar *config)
+{
+ EDataBookDirect *direct;
+
+ g_return_val_if_fail (backend_path && backend_path[0], NULL);
+ g_return_val_if_fail (backend_factory_name && backend_factory_name[0], NULL);
+
+ direct = g_object_new (E_TYPE_DATA_BOOK_DIRECT, NULL);
+
+ e_dbus_direct_book_set_backend_path (direct->priv->gdbus_object, backend_path);
+ e_dbus_direct_book_set_backend_name (direct->priv->gdbus_object, backend_factory_name);
+ e_dbus_direct_book_set_backend_config (direct->priv->gdbus_object, config);
+
+ return direct;
+}
+
+/**
+ * e_data_book_direct_register_gdbus_object:
+ * @direct: An #EDataBookDirect
+ * @connection: The #GDBusConnection to register with
+ * @object_path: The object path to place the direct access configuration data
+ * @error: A location to store any error which might occur while registering
+ *
+ * Places @direct on the @connection at @object_path
+ *
+ * Since: 3.8
+ **/
+gboolean
+e_data_book_direct_register_gdbus_object (EDataBookDirect *direct,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error)
+{
+ g_return_val_if_fail (E_IS_DATA_BOOK_DIRECT (direct), FALSE);
+ g_return_val_if_fail (connection != NULL, FALSE);
+ g_return_val_if_fail (object_path != NULL, 0);
+
+ return g_dbus_interface_skeleton_export (G_DBUS_INTERFACE_SKELETON (direct->priv->gdbus_object),
+ connection, object_path, error);
+}
diff --git a/addressbook/libedata-book/e-data-book-direct.h b/addressbook/libedata-book/e-data-book-direct.h
new file mode 100644
index 0000000..ab1767d
--- /dev/null
+++ b/addressbook/libedata-book/e-data-book-direct.h
@@ -0,0 +1,64 @@
+/* -*- Mode: C; tab-width: 8; indent-tabs-mode: t; c-basic-offset: 8 -*- */
+/*
+ * Copyright (C) 2012 Intel Corporation
+ *
+ * This program is free software; you can redistribute it and/or
+ * modify it under the terms of the GNU Lesser General Public
+ * License as published by the Free Software Foundation; either
+ * version 2 of the License, or (at your option) version 3.
+ *
+ * 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
+ * Lesser General Public License for more details.
+ *
+ * You should have received a copy of the GNU Lesser General Public
+ * License along with the program; if not, see <http://www.gnu.org/licenses/>
+ *
+ * Author: Tristan Van Berkom <tristanvb openismus com>
+ */
+
+#if !defined (__LIBEDATA_BOOK_H_INSIDE__) && !defined (LIBEDATA_BOOK_COMPILATION)
+#error "Only <libedata-book/libedata-book.h> should be included directly."
+#endif
+
+#ifndef E_DATA_BOOK_DIRECT_H
+#define E_DATA_BOOK_DIRECT_H
+
+#include <gio/gio.h>
+
+G_BEGIN_DECLS
+
+#define E_TYPE_DATA_BOOK_DIRECT (e_data_book_direct_get_type ())
+#define E_DATA_BOOK_DIRECT(o) (G_TYPE_CHECK_INSTANCE_CAST ((o), E_TYPE_DATA_BOOK_DIRECT,
EDataBookDirect))
+#define E_DATA_BOOK_DIRECT_CLASS(k) (G_TYPE_CHECK_CLASS_CAST((k), E_TYPE_DATA_BOOK_DIRECT,
EDataBookDirectClass))
+#define E_IS_DATA_BOOK_DIRECT(o) (G_TYPE_CHECK_INSTANCE_TYPE ((o), E_TYPE_DATA_BOOK_DIRECT))
+#define E_IS_DATA_BOOK_DIRECT_CLASS(k) (G_TYPE_CHECK_CLASS_TYPE ((k), E_TYPE_DATA_BOOK_DIRECT))
+#define E_DATA_BOOK_DIRECT_GET_CLASS(k) (G_TYPE_INSTANCE_GET_CLASS ((obj), E_TYPE_DATA_BOOK_DIRECT,
EDataBookDirect))
+
+typedef struct _EDataBookDirect EDataBookDirect;
+typedef struct _EDataBookDirectClass EDataBookDirectClass;
+typedef struct _EDataBookDirectPrivate EDataBookDirectPrivate;
+
+struct _EDataBookDirect {
+ GObject parent;
+ EDataBookDirectPrivate *priv;
+};
+
+struct _EDataBookDirectClass {
+ GObjectClass parent;
+};
+
+GType e_data_book_direct_get_type (void);
+EDataBookDirect * e_data_book_direct_new (const gchar *backend_path,
+ const gchar *backend_factory_name,
+ const gchar *config);
+
+gboolean e_data_book_direct_register_gdbus_object (EDataBookDirect *direct,
+ GDBusConnection *connection,
+ const gchar *object_path,
+ GError **error);
+
+G_END_DECLS
+
+#endif /* E_DATA_BOOK_DIRECT_H */
diff --git a/addressbook/libedata-book/libedata-book.h b/addressbook/libedata-book/libedata-book.h
index bd5457c..0c916b3 100644
--- a/addressbook/libedata-book/libedata-book.h
+++ b/addressbook/libedata-book/libedata-book.h
@@ -33,6 +33,7 @@
#include <libedata-book/e-book-backend-sync.h>
#include <libedata-book/e-book-backend.h>
#include <libedata-book/e-data-book-factory.h>
+#include <libedata-book/e-data-book-direct.h>
#include <libedata-book/e-data-book-view.h>
#include <libedata-book/e-data-book.h>
diff --git a/private/Makefile.am b/private/Makefile.am
index 38a2057..54a8b37 100644
--- a/private/Makefile.am
+++ b/private/Makefile.am
@@ -37,6 +37,15 @@ $(GENERATED_DBUS_ADDRESS_BOOK) : Makefile.am org.gnome.evolution.dataserver.Addr
$(top_srcdir)/private/org.gnome.evolution.dataserver.AddressBook.xml \
$(NULL)
+$(GENERATED_DBUS_DIRECT_BOOK) : Makefile.am org.gnome.evolution.dataserver.DirectBook.xml
+ $(AM_V_GEN) gdbus-codegen \
+ --interface-prefix org.gnome.evolution.dataserver \
+ --c-namespace E_DBus \
+ --generate-c-code e-dbus-direct-book \
+ --generate-docbook e-dbus-direct-book \
+ $(top_srcdir)/private/org.gnome.evolution.dataserver.DirectBook.xml \
+ $(NULL)
+
$(GENERATED_DBUS_ADDRESS_BOOK_FACTORY) : Makefile.am org.gnome.evolution.dataserver.AddressBookFactory.xml
$(AM_V_GEN) gdbus-codegen \
--interface-prefix org.gnome.evolution.dataserver \
@@ -108,6 +117,12 @@ GENERATED_DBUS_ADDRESS_BOOK = \
e-dbus-address-book-org.gnome.evolution.dataserver.AddressBook.xml \
$(NULL)
+GENERATED_DBUS_DIRECT_BOOK = \
+ e-dbus-direct-book.c \
+ e-dbus-direct-book.h \
+ e-dbus-direct-book-org.gnome.evolution.dataserver.DirectBook.xml \
+ $(NULL)
+
GENERATED_DBUS_ADDRESS_BOOK_FACTORY = \
e-dbus-address-book-factory.c \
e-dbus-address-book-factory.h \
@@ -131,6 +146,7 @@ BUILT_SOURCES = \
$(GENERATED_DBUS_SOURCE_MANAGER) \
$(GENERATED_DBUS_AUTHENTICATOR) \
$(GENERATED_DBUS_ADDRESS_BOOK) \
+ $(GENERATED_DBUS_DIRECT_BOOK) \
$(GENERATED_DBUS_ADDRESS_BOOK_FACTORY) \
$(GENERATED_DBUS_CALENDAR) \
$(GENERATED_DBUS_CALENDAR_FACTORY) \
@@ -167,6 +183,7 @@ EXTRA_DIST = \
org.gnome.evolution.dataserver.SourceManager.xml \
org.gnome.evolution.dataserver.Authenticator.xml \
org.gnome.evolution.dataserver.AddressBook.xml \
+ org.gnome.evolution.dataserver.DirectBook.xml \
org.gnome.evolution.dataserver.AddressBookFactory.xml \
org.gnome.evolution.dataserver.Calendar.xml \
org.gnome.evolution.dataserver.CalendarFactory.xml \
diff --git a/private/org.gnome.evolution.dataserver.DirectBook.xml
b/private/org.gnome.evolution.dataserver.DirectBook.xml
new file mode 100644
index 0000000..9263612
--- /dev/null
+++ b/private/org.gnome.evolution.dataserver.DirectBook.xml
@@ -0,0 +1,19 @@
+<!DOCTYPE node PUBLIC
+"-//freedesktop//DTD D-Bus Object Introspection 1.0//EN"
+"http://www.freedesktop.org/standards/dbus/1.0/introspect.dtd">
+<node name="/" xmlns:doc="http://www.freedesktop.org/dbus/1.0/doc.dtd">
+
+<!--
+ org.gnome.evolution.dataserver.DirectBook:
+ @short_description: Direct Access book metadata object
+ @since: 3.8
+
+ This interface reports direct read access capability for an addressbook backend.
+-->
+<interface name="org.gnome.evolution.dataserver.DirectBook">
+
+ <property name="BackendPath" type="s" access="read"/>
+ <property name="BackendName" type="s" access="read"/>
+ <property name="BackendConfig" type="s" access="read"/>
+
+</interface>
[
Date Prev][
Date Next] [
Thread Prev][
Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]