* Adds a new parameter to get_send_queue that tells the runtime to create it or not if it does not exist
pmo-trunk-r4431
if (TNY_IS_ACCOUNT(acc)) {
gchar *tmp, *url = tny_account_get_url_string (acc);
ModestTnySendQueue *sendqueue =
- modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(acc));
+ modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT(acc), TRUE);
gchar *queue_str = modest_tny_send_queue_to_string (sendqueue);
tmp = g_strdup_printf ("%s[%s]: '%s': %s\n%s",
if (priv->op_type == MODEST_MAIL_OPERATION_TYPE_SEND) {
ModestTnySendQueue *queue;
- queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT (priv->account));
+ queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT (priv->account),
+ TRUE);
/* Cancel the sending of the following next messages */
tny_send_queue_cancel (TNY_SEND_QUEUE (queue), TNY_SEND_QUEUE_CANCEL_ACTION_SUSPEND, NULL);
priv->done = 1;
priv->total = 1;
- send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
+ send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account, TRUE));
if (!TNY_IS_SEND_QUEUE(send_queue)) {
if (priv->error) {
g_error_free (priv->error);
TnyFolder *outbox;
guint num_messages;
- send_queue = modest_runtime_get_send_queue (transport_account);
+ send_queue = modest_runtime_get_send_queue (transport_account, TRUE);
g_object_unref (transport_account);
/* Get outbox folder */
traccount = modest_tny_account_store_get_transport_account_from_outbox_header(accstore, header);
if (traccount) {
ModestTnySendQueueStatus status;
- ModestTnySendQueue *send_queue = modest_runtime_get_send_queue(traccount);
+ ModestTnySendQueue *send_queue = modest_runtime_get_send_queue(traccount, TRUE);
TnyIterator *iter = tny_list_create_iterator(headers);
g_object_unref(remove_headers);
remove_headers = TNY_LIST(tny_simple_list_new());
}
ModestTnySendQueue*
-modest_runtime_get_send_queue (TnyTransportAccount *account)
+modest_runtime_get_send_queue (TnyTransportAccount *account,
+ gboolean create)
{
ModestCacheMgr *cache_mgr;
GHashTable *send_queue_cache;
- gpointer orig_key, send_queue;
+ gpointer orig_key = NULL, send_queue = NULL;
g_return_val_if_fail (_singletons, NULL);
g_return_val_if_fail (TNY_IS_TRANSPORT_ACCOUNT(account), NULL);
* Note that each modest account will have its own outbox folder,
* returned by TnySendQueue::get_outbox_func().
*/
- if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue)) {
+ if (!g_hash_table_lookup_extended (send_queue_cache, account, &orig_key, &send_queue) &&
+ create) {
/* Note that this send queue will start sending messages from its outbox
* as soon as it is instantiated: */
send_queue = (gpointer)modest_tny_send_queue_new (TNY_CAMEL_TRANSPORT_ACCOUNT(account));
g_object_ref (send_queue));
}
- return MODEST_TNY_SEND_QUEUE(send_queue);
+ return (send_queue) ? MODEST_TNY_SEND_QUEUE(send_queue) : NULL;
}
void modest_runtime_remove_all_send_queues ()
/**
* modest_runtime_get_send_queue:
* @account: a valid TnyTransportAccount
+ * @create: whether or not a new send queue should be created if it does not exist
*
* get the send queue for the given account
*
* Returns: the #ModestTnySendQueue singleton instance for this account
* (ie., one singleton per account). This should NOT be unref'd.
**/
-ModestTnySendQueue* modest_runtime_get_send_queue (TnyTransportAccount *account);
+ModestTnySendQueue* modest_runtime_get_send_queue (TnyTransportAccount *account,
+ gboolean create);
/**
* modest_runtime_remove_send_queue:
tny_store_account_delete_cache (TNY_STORE_ACCOUNT (account));
} else if (TNY_IS_TRANSPORT_ACCOUNT (account)) {
ModestTnySendQueue* send_queue;
- send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT (account));
- if (modest_tny_send_queue_sending_in_progress (send_queue))
- tny_send_queue_cancel (TNY_SEND_QUEUE (send_queue),
- TNY_SEND_QUEUE_CANCEL_ACTION_REMOVE,
- NULL);
- modest_runtime_remove_send_queue (TNY_TRANSPORT_ACCOUNT (account));
+ send_queue = modest_runtime_get_send_queue (TNY_TRANSPORT_ACCOUNT (account), FALSE);
+ if (send_queue) {
+ if (modest_tny_send_queue_sending_in_progress (send_queue))
+ tny_send_queue_cancel (TNY_SEND_QUEUE (send_queue),
+ TNY_SEND_QUEUE_CANCEL_ACTION_REMOVE,
+ NULL);
+ modest_runtime_remove_send_queue (TNY_TRANSPORT_ACCOUNT (account));
+ }
}
}
TnyTransportAccount *account = TNY_TRANSPORT_ACCOUNT (tny_iterator_get_current (acc_iter));
ModestTnySendQueue *send_queue;
ModestTnySendQueueStatus status;
- send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account));
+ send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account), TRUE);
status = modest_tny_send_queue_get_msg_status(send_queue, msg_id);
if (status != MODEST_TNY_SEND_QUEUE_UNKNOWN) {
header_acc = g_object_ref(account);
iter = tny_list_create_iterator (accounts);
while (!tny_iterator_is_done (iter)) {
account = TNY_TRANSPORT_ACCOUNT(tny_iterator_get_current (iter));
- send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account));
+ send_queue = modest_runtime_get_send_queue(TNY_TRANSPORT_ACCOUNT(account), TRUE);
g_object_unref(account);
queue_status = modest_tny_send_queue_get_msg_status (send_queue, msg_uid);
char *msg_id;
account = g_strdup(modest_tny_account_get_parent_modest_account_name_for_server_account(
TNY_ACCOUNT(traccount)));
- send_queue = modest_runtime_get_send_queue(traccount);
+ send_queue = modest_runtime_get_send_queue(traccount, TRUE);
msg_id = modest_tny_send_queue_get_msg_id (header);
status = modest_tny_send_queue_get_msg_status(send_queue, msg_id);
/* Only open messages in outbox with the editor if they are in Failed state */
}
/* Get send queue*/
- send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account));
+ send_queue = TNY_SEND_QUEUE (modest_runtime_get_send_queue (transport_account, TRUE));
if (!TNY_IS_SEND_QUEUE(send_queue)) {
g_set_error (&error, MODEST_MAIL_OPERATION_ERROR,
MODEST_MAIL_OPERATION_ERROR_ITEM_NOT_FOUND,