summaryrefslogtreecommitdiff
path: root/telepathy-logger/event.c
diff options
context:
space:
mode:
Diffstat (limited to 'telepathy-logger/event.c')
-rw-r--r--telepathy-logger/event.c403
1 files changed, 0 insertions, 403 deletions
diff --git a/telepathy-logger/event.c b/telepathy-logger/event.c
deleted file mode 100644
index f061ce0..0000000
--- a/telepathy-logger/event.c
+++ /dev/null
@@ -1,403 +0,0 @@
-/*
- * Copyright (C) 2009 Collabora Ltd.
- *
- * This library 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.1 of the License, or (at your option) any later version.
- *
- * This library 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 this library; if not, write to the Free Software
- * Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA
- *
- * Authors: Cosimo Alfarano <cosimo.alfarano@collabora.co.uk>
- */
-
-#include "config.h"
-#include "event.h"
-#include "event-internal.h"
-
-#include <glib.h>
-#include "entity-internal.h"
-
-#define DEBUG_FLAG TPL_DEBUG_EVENT
-#include <telepathy-logger/debug-internal.h>
-#include <telepathy-logger/util-internal.h>
-
-/**
- * SECTION:event
- * @title: TplEvent
- * @short_description: Abstract representation of a log event
- * @see_also: #TplTextEvent and other subclasses when they'll exist
- *
- * The TPLogger log event represents a generic log event, which will be
- * specialized by subclasses of #TplEvent.
- */
-
-/**
- * TplEvent:
- *
- * An object representing a generic log event.
- */
-
-G_DEFINE_ABSTRACT_TYPE (TplEvent, tpl_event, G_TYPE_OBJECT)
-
-struct _TplEventPriv
-{
- gint64 timestamp;
- TpAccount *account;
- gchar *channel_path;
-
- /* message and receiver may be NULL depending on the signal. ie. status
- * changed signals set only the sender */
- TplEntity *sender;
- TplEntity *receiver;
-};
-
-enum {
- PROP_TIMESTAMP = 1,
- PROP_TARGET_ID,
- PROP_ACCOUNT,
- PROP_ACCOUNT_PATH,
- PROP_CHANNEL_PATH,
- PROP_SENDER,
- PROP_RECEIVER
-};
-
-
-static void
-tpl_event_finalize (GObject *obj)
-{
- TplEvent *self = TPL_EVENT (obj);
- TplEventPriv *priv = self->priv;
-
- tp_clear_pointer (&priv->channel_path, g_free);
-
- G_OBJECT_CLASS (tpl_event_parent_class)->finalize (obj);
-}
-
-
-static void
-tpl_event_dispose (GObject *obj)
-{
- TplEvent *self = TPL_EVENT (obj);
- TplEventPriv *priv = self->priv;
-
- tp_clear_object (&priv->account);
- tp_clear_object (&priv->sender);
- tp_clear_object (&priv->receiver);
-
- G_OBJECT_CLASS (tpl_event_parent_class)->dispose (obj);
-}
-
-
-static void
-tpl_event_get_property (GObject *object,
- guint param_id,
- GValue *value,
- GParamSpec *pspec)
-{
- TplEvent *self = TPL_EVENT (object);
- TplEventPriv *priv = self->priv;
-
- switch (param_id)
- {
- case PROP_TIMESTAMP:
- g_value_set_int64 (value, priv->timestamp);
- break;
- case PROP_ACCOUNT:
- g_value_set_object (value, priv->account);
- break;
- case PROP_ACCOUNT_PATH:
- g_value_set_string (value, tpl_event_get_account_path (self));
- break;
- case PROP_CHANNEL_PATH:
- g_value_set_string (value, priv->channel_path);
- break;
- case PROP_SENDER:
- g_value_set_object (value, priv->sender);
- break;
- case PROP_RECEIVER:
- g_value_set_object (value, priv->receiver);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-
-static void
-tpl_event_set_property (GObject *object,
- guint param_id,
- const GValue *value,
- GParamSpec *pspec)
-{
- TplEvent *self = TPL_EVENT (object);
- TplEventPriv *priv = self->priv;
-
- switch (param_id) {
- case PROP_TIMESTAMP:
- g_assert (priv->timestamp == 0);
- priv->timestamp = g_value_get_int64 (value);
- break;
- case PROP_ACCOUNT:
- g_assert (priv->account == NULL);
- priv->account = g_value_dup_object (value);
- break;
- case PROP_CHANNEL_PATH:
- g_assert (priv->channel_path == NULL);
- priv->channel_path = g_value_dup_string (value);
- break;
- case PROP_SENDER:
- g_assert (priv->sender == NULL);
- g_return_if_fail (TPL_IS_ENTITY (g_value_get_object (value)));
- priv->sender = g_value_dup_object (value);
- break;
- case PROP_RECEIVER:
- g_assert (priv->receiver == NULL);
- /* can be NULL */
- priv->receiver = g_value_dup_object (value);
- break;
- default:
- G_OBJECT_WARN_INVALID_PROPERTY_ID (object, param_id, pspec);
- break;
- };
-}
-
-static inline gboolean
-account_equal (TpAccount *account1, TpAccount *account2)
-{
- g_return_val_if_fail (TP_IS_PROXY (account1), FALSE);
- g_return_val_if_fail (TP_IS_PROXY (account2), FALSE);
-
- return !tp_strdiff (tp_proxy_get_object_path (TP_PROXY (account1)),
- tp_proxy_get_object_path (TP_PROXY (account2)));
-}
-
-
-static gboolean
-tpl_event_equal_default (TplEvent *message1,
- TplEvent *message2)
-{
- g_return_val_if_fail (TPL_IS_EVENT (message1), FALSE);
- g_return_val_if_fail (TPL_IS_EVENT (message2), FALSE);
-
- return message1->priv->timestamp == message2->priv->timestamp
- && account_equal (message1->priv->account, message2->priv->account)
- && _tpl_entity_compare (message1->priv->sender, message2->priv->sender)
- && _tpl_entity_compare (message1->priv->receiver, message2->priv->receiver);
-}
-
-
-static void
-tpl_event_class_init (TplEventClass *klass)
-{
- GObjectClass *object_class = G_OBJECT_CLASS (klass);
- GParamSpec *param_spec;
-
- /* to be used by subclasses */
- object_class->finalize = tpl_event_finalize;
- object_class->dispose = tpl_event_dispose;
- object_class->get_property = tpl_event_get_property;
- object_class->set_property = tpl_event_set_property;
-
- klass->equal = tpl_event_equal_default;
-
- param_spec = g_param_spec_int64 ("timestamp",
- "Timestamp",
- "The timestamp (gint64) for the log event",
- G_MININT64, G_MAXINT64, 0,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_TIMESTAMP, param_spec);
-
- param_spec = g_param_spec_object ("account",
- "TpAccount",
- "The TpAccount to which the log event is related",
- TP_TYPE_ACCOUNT,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_ACCOUNT, param_spec);
-
- param_spec = g_param_spec_string ("account-path",
- "AccountPath",
- "The account path of the TpAccount to which the log event is related",
- NULL,
- G_PARAM_READABLE | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_ACCOUNT_PATH, param_spec);
-
- param_spec = g_param_spec_string ("channel-path",
- "ChannelPath",
- "The channel path of the TpChannel to which the log event is related",
- NULL,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_CHANNEL_PATH, param_spec);
-
- param_spec = g_param_spec_object ("sender",
- "Sender",
- "TplEntity instance who originated the log event",
- TPL_TYPE_ENTITY,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_SENDER, param_spec);
-
- param_spec = g_param_spec_object ("receiver",
- "Receiver",
- "TplEntity instance destination for the log event "
- "(may be NULL with some log stores)",
- TPL_TYPE_ENTITY,
- G_PARAM_READWRITE | G_PARAM_CONSTRUCT_ONLY | G_PARAM_STATIC_STRINGS);
- g_object_class_install_property (object_class, PROP_RECEIVER, param_spec);
-
- g_type_class_add_private (object_class, sizeof (TplEventPriv));
-}
-
-
-static void
-tpl_event_init (TplEvent *self)
-{
- TplEventPriv *priv = G_TYPE_INSTANCE_GET_PRIVATE (self,
- TPL_TYPE_EVENT, TplEventPriv);
- self->priv = priv;
-}
-
-/**
- * tpl_event_get_timestamp:
- * @self: a #TplEvent
- *
- * Returns: the same timestamp as the #TplEvent:timestamp property
- */
-gint64
-tpl_event_get_timestamp (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), -1);
-
- return self->priv->timestamp;
-}
-
-
-/**
- * tpl_event_get_sender:
- * @self: a #TplEvent
- *
- * Returns: (transfer none): the same #TplEntity as the #TplEvent:sender property
- */
-TplEntity *
-tpl_event_get_sender (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
-
- return self->priv->sender;
-}
-
-/**
- * tpl_event_get_receiver:
- * @self: a #TplEvent
- *
- * Returns: (transfer none): the same #TplEntity as the #TplEvent:receiver property
- */
-TplEntity *
-tpl_event_get_receiver (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
-
- return self->priv->receiver;
-}
-
-
-TplEntity *
-_tpl_event_get_target (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
-
- if (_tpl_event_target_is_room (self)
- || tpl_entity_get_entity_type (self->priv->sender) == TPL_ENTITY_SELF)
- return self->priv->receiver;
- else
- return self->priv->sender;
-}
-
-
-const gchar *
-_tpl_event_get_target_id (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
-
- return tpl_entity_get_identifier (_tpl_event_get_target (self));
-}
-
-gboolean
-_tpl_event_target_is_room (TplEvent *self)
-{
- /* Some log-store like Pidgin text mode does not know about receiver, so
- * having a NULL receiver is fine. */
- if (self->priv->receiver == NULL)
- return FALSE;
-
- return (tpl_entity_get_entity_type (self->priv->receiver) == TPL_ENTITY_ROOM);
-}
-
-
-/**
- * tpl_event_get_account_path:
- * @self: a #TplEvent
- *
- * <!-- no more to say -->
- *
- * Returns: the path as the #TplEvent:account property
- */
-const gchar *
-tpl_event_get_account_path (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
- g_return_val_if_fail (TP_IS_ACCOUNT (self->priv->account), NULL);
-
- return tp_proxy_get_object_path (self->priv->account);
-}
-
-
-const gchar *
-_tpl_event_get_channel_path (TplEvent *self)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), NULL);
-
- return self->priv->channel_path;
-}
-
-
-/**
- * tpl_event_equal:
- * @self: TplEvent subclass instance
- * @data: an instance of the same TplEvent subclass of @self
- *
- * Checks if two instances of TplEvent represent the same data
- *
- * Returns: %TRUE if @data is the same type of @self and they hold the same
- * data, %FALSE otherwise
- */
-gboolean
-tpl_event_equal (TplEvent *self,
- TplEvent *data)
-{
- g_return_val_if_fail (TPL_IS_EVENT (self), FALSE);
- g_return_val_if_fail (TPL_IS_EVENT (data), FALSE);
-
- return TPL_EVENT_GET_CLASS (self)->equal (self, data);
-}
-
-/**
- * tpl_event_get_account:
- * @self: a #TplEvent
- *
- * <!-- no more to say -->
- *
- * Returns: (transfer none): the same account as the #TplEvent:account property
- */
-TpAccount *
-tpl_event_get_account (TplEvent *self)
-{
- return self->priv->account;
-}