summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-10 11:51:49 +0000
committerNicolas Dufresne <nicolas.dufresne@collabora.co.uk>2011-02-10 17:03:36 +0000
commit87cf2212042ad065d3ad64813ee11f6802d070e6 (patch)
treedd3dba2cf727dee73cf9c1fcbc0148dddd1bc130
parentaba66532850c2aaf68f919c130605bd58742fea9 (diff)
downloadtelepathy-logger-87cf2212042ad065d3ad64813ee11f6802d070e6.tar.gz
Implement DBus method for ClearAccount
-rw-r--r--extensions/Logger.xml13
-rw-r--r--telepathy-logger/dbus-service.c45
2 files changed, 58 insertions, 0 deletions
diff --git a/extensions/Logger.xml b/extensions/Logger.xml
index c05d726..b6de7dc 100644
--- a/extensions/Logger.xml
+++ b/extensions/Logger.xml
@@ -160,6 +160,19 @@ Foundation, Inc., 51 Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.</
</tp:docstring>
</method>
+ <method name="ClearAccount"
+ tp:name-for-bindings="Clear_Account">
+ <arg direction="in" name="Account" type="o" tp:type="Account">
+ <tp:docstring>
+ The object path for the TpAccount in which logs will be cleared.
+ </tp:docstring>
+ </arg>
+
+ <tp:docstring>
+ Clear all logs stored for specified account.
+ </tp:docstring>
+ </method>
+
<signal name="FavouriteContactsChanged"
tp:name-for-bindings="Favourite_Contacts_Changed">
<tp:docstring>
diff --git a/telepathy-logger/dbus-service.c b/telepathy-logger/dbus-service.c
index dd40667..3b95950 100644
--- a/telepathy-logger/dbus-service.c
+++ b/telepathy-logger/dbus-service.c
@@ -940,6 +940,50 @@ tpl_dbus_service_clear (TplSvcLogger *logger,
static void
+tpl_dbus_service_clear_account (TplSvcLogger *logger,
+ const gchar *account_path,
+ DBusGMethodInvocation *context)
+{
+ TplDBusService *self = TPL_DBUS_SERVICE (logger);
+ TpDBusDaemon *bus;
+ TpAccount *account;
+ GError *error = NULL;
+
+ g_return_if_fail (TPL_IS_DBUS_SERVICE (self));
+ g_return_if_fail (context != NULL);
+
+ bus = tp_dbus_daemon_dup (&error);
+ if (bus == NULL)
+ {
+ DEBUG ("Unable to acquire the bus daemon: %s", error->message);
+ dbus_g_method_return_error (context, error);
+ goto out;
+ }
+
+ account = tp_account_new (bus, account_path, &error);
+ if (account == NULL)
+ {
+ DEBUG ("Unable to acquire the account for %s: %s", account_path,
+ error->message);
+ dbus_g_method_return_error (context, error);
+ goto out;
+ }
+
+ /* We want to clear synchronously to avoid concurent write */
+ _tpl_log_manager_clear_account (self->priv->manager, account);
+ g_object_unref (account);
+
+ tpl_svc_logger_return_from_clear_account (context);
+
+out:
+ if (bus != NULL)
+ g_object_unref (bus);
+
+ g_clear_error (&error);
+}
+
+
+static void
tpl_logger_iface_init (gpointer iface,
gpointer iface_data)
{
@@ -951,5 +995,6 @@ tpl_logger_iface_init (gpointer iface,
IMPLEMENT (add_favourite_contact);
IMPLEMENT (remove_favourite_contact);
IMPLEMENT (clear);
+ IMPLEMENT (clear_account);
#undef IMPLEMENT
}