diff options
author | Cosimo Alfarano <cosimo.alfarano@collabora.co.uk> | 2010-02-19 17:35:25 +0000 |
---|---|---|
committer | Cosimo Alfarano <cosimo.alfarano@collabora.co.uk> | 2010-02-22 12:45:38 +0000 |
commit | 7b20066d126e414fbfd00cd6bd06617cd123ca55 (patch) | |
tree | 8384095dd8294f18cd923f11cb1aa72c4b107223 | |
parent | 5a9b0433b7af89bb3df40d4ac411bd7befeeba7f (diff) |
Improved error managing in log-manager and log-store-empathy
-rw-r--r-- | telepathy-logger/log-manager.c | 23 | ||||
-rw-r--r-- | telepathy-logger/log-manager.h | 1 | ||||
-rw-r--r-- | telepathy-logger/log-store-empathy.c | 8 | ||||
-rw-r--r-- | telepathy-logger/log-store.h | 10 |
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); |