summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
authorCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-02-19 17:35:25 +0000
committerCosimo Alfarano <cosimo.alfarano@collabora.co.uk>2010-02-22 12:45:38 +0000
commit7b20066d126e414fbfd00cd6bd06617cd123ca55 (patch)
tree8384095dd8294f18cd923f11cb1aa72c4b107223
parent5a9b0433b7af89bb3df40d4ac411bd7befeeba7f (diff)
Improved error managing in log-manager and log-store-empathy
-rw-r--r--telepathy-logger/log-manager.c23
-rw-r--r--telepathy-logger/log-manager.h1
-rw-r--r--telepathy-logger/log-store-empathy.c8
-rw-r--r--telepathy-logger/log-store.h10
4 files changed, 33 insertions, 9 deletions
diff --git a/telepathy-logger/log-manager.c b/telepathy-logger/log-manager.c
index 9a672e6a4..10cb6bfad 100644
--- a/telepathy-logger/log-manager.c
+++ b/telepathy-logger/log-manager.c
@@ -221,6 +221,7 @@ tpl_log_manager_add_message (TplLogManager *manager,
GList *l;
gboolean retval = FALSE;
+ g_return_val_if_fail (error == NULL || *error == NULL, FALSE);
g_return_val_if_fail (TPL_IS_LOG_MANAGER (manager), FALSE);
g_return_val_if_fail (TPL_IS_LOG_ENTRY (message), FALSE);
@@ -229,15 +230,28 @@ tpl_log_manager_add_message (TplLogManager *manager,
/* send the message to any writable log store */
for (l = priv->writable_stores; l != NULL; l = g_list_next (l))
{
+ GError *loc_error = NULL;
TplLogStore *store = l->data;
gboolean result;
- result = tpl_log_store_add_message (store, message, error);
+ result = tpl_log_store_add_message (store, message, &loc_error);
+ if (!result)
+ {
+ DEBUG ("add_message method for logstore name=%s: %s",
+ tpl_log_store_get_name (store), loc_error->message);
+ g_clear_error (&loc_error);
+ }
/* TRUE if at least one LogStore succeeds */
retval = result || retval;
}
if (!retval)
- g_critical ("Failed to write to at least writable LogStore.");
+ {
+ g_critical ("Failed to write to at least writable LogStore.");
+ g_set_error_literal (error, TPL_LOG_MANAGER_ERROR,
+ TPL_LOG_MANAGER_ERROR_ADD_MESSAGE,
+ "Not recoverable error occurred during log manager's "
+ "add_message() execution");
+ }
return retval;
}
@@ -727,10 +741,9 @@ _add_message_async_thread (GSimpleAsyncResult *simple,
tpl_log_manager_add_message (async_data->manager, chat_info->logentry,
&error);
-
- if (error!=NULL)
+ if (error != NULL)
{
- g_error ("synchronous operation error: %s", error->message);
+ DEBUG ("synchronous operation error: %s", error->message);
g_simple_async_result_set_from_error (simple, error);
g_error_free (error);
}
diff --git a/telepathy-logger/log-manager.h b/telepathy-logger/log-manager.h
index e7d2b24df..4f71bddeb 100644
--- a/telepathy-logger/log-manager.h
+++ b/telepathy-logger/log-manager.h
@@ -46,6 +46,7 @@ typedef enum
{
/* generic error */
TPL_LOG_MANAGER_ERROR_FAILED,
+ TPL_LOG_MANAGER_ERROR_ADD_MESSAGE,
/* arg passed is not a valid GObject or in the expected format */
TPL_LOG_MANAGER_ERROR_BAD_ARG
} TplLogManagerError;
diff --git a/telepathy-logger/log-store-empathy.c b/telepathy-logger/log-store-empathy.c
index faf47d942..16635b3c2 100644
--- a/telepathy-logger/log-store-empathy.c
+++ b/telepathy-logger/log-store-empathy.c
@@ -525,14 +525,10 @@ add_message_text (TplLogStore *self,
GError **error)
{
TplLogEntryTextSignalType signal_type;
- const gchar *chat_id;
- gboolean chatroom;
g_return_val_if_fail (TPL_IS_LOG_STORE (self), FALSE);
g_return_val_if_fail (TPL_IS_LOG_ENTRY_TEXT (message), FALSE);
- chat_id = tpl_log_entry_get_chat_id (TPL_LOG_ENTRY (message));
- chatroom = tpl_log_entry_text_is_chatroom (message);
signal_type = tpl_log_entry_get_signal_type (TPL_LOG_ENTRY (message));
switch (signal_type)
@@ -575,6 +571,10 @@ log_store_empathy_add_message (TplLogStore *self,
case TPL_LOG_ENTRY_CHANNEL_TEXT_SIGNAL_CHAT_STATUS_CHANGED:
return add_message_text (self, TPL_LOG_ENTRY_TEXT (message), error);
default:
+ g_set_error (error, TPL_LOG_STORE_ERROR,
+ TPL_LOG_STORE_ERROR_ADD_MESSAGE,
+ "LogEntrySignalType not handled by this LogStore (%s)",
+ log_store_empathy_get_name (self));
return FALSE;
}
}
diff --git a/telepathy-logger/log-store.h b/telepathy-logger/log-store.h
index 53ba2d0b4..8b2677668 100644
--- a/telepathy-logger/log-store.h
+++ b/telepathy-logger/log-store.h
@@ -39,6 +39,16 @@ G_BEGIN_DECLS
#define TPL_LOG_STORE_GET_INTERFACE(inst) (G_TYPE_INSTANCE_GET_INTERFACE ( \
(inst), TPL_TYPE_LOG_STORE, TplLogStoreInterface))
+#define TPL_LOG_STORE_ERROR g_quark_from_static_string ("tpl-log-store-error-quark")
+typedef enum
+{
+ /* generic error */
+ TPL_LOG_STORE_ERROR_FAILED,
+ TPL_LOG_STORE_ERROR_ADD_MESSAGE,
+} TplLogStoreError;
+
+
+
typedef struct _TplLogStore TplLogStore; /*dummy object */
typedef gboolean (*TplLogMessageFilter) (TplLogEntry *message,
gpointer user_data);