public async Task <int> GetMessagesCountAsync(CMPQueueStorageOptions queueStorageOptions) { try { if (_queueReference == null) { return(-1); } if (queueStorageOptions == null) { await _queueReference.FetchAttributesAsync(); } else { await _queueReference.FetchAttributesAsync(queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return((int)(_queueReference.ApproximateMessageCount)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(-1); } }
public async Task <Tuple <bool, CMPStorageError> > DeleteQueueAsync(CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } var couldDelete = false; if (queueStorageOptions == null) { couldDelete = await _queueReference.DeleteIfExistsAsync(); } else { couldDelete = await _queueReference.DeleteIfExistsAsync(queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return(new Tuple <bool, CMPStorageError>(couldDelete, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > AddMessageAsync(string messageString, string popupTokenString, CMPQueueStorageOptions queueStorageOptions = null) { if (string.IsNullOrEmpty(messageString) == true) { return(new Tuple <bool, CMPStorageError>(false, null)); } try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } CloudQueueMessage queueMessage = null; if (string.IsNullOrEmpty(popupTokenString) == true) { queueMessage = new CloudQueueMessage(messageString); } else { queueMessage = new CloudQueueMessage(messageString, popupTokenString); } if (queueStorageOptions == null) { await _queueReference.AddMessageAsync(queueMessage); } else { await _queueReference.AddMessageAsync(queueMessage, queueStorageOptions.TimeToLive, queueStorageOptions.VisibilityTimeoutOrDelay, queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > UpdateMessageAsync(string updateMessageString, TimeSpan visibilityTimeOut, CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } var cloudMessage = await _queueReference.GetMessageAsync(); cloudMessage?.SetMessageContent(updateMessageString); if (queueStorageOptions == null) { await _queueReference.UpdateMessageAsync(cloudMessage, visibilityTimeOut, MessageUpdateFields.Content | MessageUpdateFields.Visibility); } else { await _queueReference.UpdateMessageAsync(cloudMessage, visibilityTimeOut, MessageUpdateFields.Content | MessageUpdateFields.Visibility, queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > UpdateMessageAsync(string messageString, string messageIdString, string popupTokenString, CMPQueueStorageOptions queueStorageOptions) { if (queueStorageOptions == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } if ((string.IsNullOrEmpty(messageIdString) == true) || (string.IsNullOrEmpty(popupTokenString) == true)) { return(new Tuple <bool, CMPStorageError>(false, null)); } try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } CloudQueueMessage queueMessage = new CloudQueueMessage(messageIdString, popupTokenString); queueMessage.SetMessageContent((queueStorageOptions.MessageUpdateFields == MessageUpdateFields.Content) ? messageString : string.Empty); await _queueReference.UpdateMessageAsync(queueMessage, queueStorageOptions.VisibilityTimeoutOrDelay, queueStorageOptions.MessageUpdateFields); return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > DeleteBatchMessagesAsync(List <CloudQueueMessage> queueMessagesList, CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } await Task.Run(() => { var deleteTasksArray = queueMessagesList.Select(async(CloudQueueMessage queueMessageInfo) => { if (queueMessageInfo == null) { return; } await DeleteMessageAsync(queueMessageInfo, queueStorageOptions); }).ToArray(); Task.WaitAll(deleteTasksArray, _tokenSource.Token); }); return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > DeQueueMessageAsync(TimeSpan visibilityTimeOut, CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } CloudQueueMessage queueMessage = null; if (queueStorageOptions == null) { queueMessage = await _queueReference.GetMessageAsync(); } else { queueMessage = await _queueReference.GetMessageAsync(visibilityTimeOut, queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } ProcessQueueMessage?.Invoke(queueMessage); var couldDeleteInfo = await DeleteMessageAsync(queueMessage, queueStorageOptions); return(couldDeleteInfo); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > DeleteMessageAsync(string deleteMessageString, string popupTokenString, CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } var cloudMessage = await _queueReference.GetMessageAsync(); if (queueStorageOptions == null) { await _queueReference.DeleteMessageAsync(deleteMessageString, popupTokenString); } else { await _queueReference.DeleteMessageAsync(deleteMessageString, popupTokenString, queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, error)); } }
public async Task <Tuple <bool, CMPStorageError> > DeQueueBatchMessagesAsync(TimeSpan visibilityTimeOut, int deQueueCount, CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <bool, CMPStorageError>(false, null)); } if (deQueueCount == 0) { deQueueCount = await GetMessagesCountAsync(queueStorageOptions); } int batchCount = (deQueueCount / 10); if (batchCount == 0) { batchCount = deQueueCount; } do { IEnumerable <CloudQueueMessage> queueMessages = null; if (queueStorageOptions == null) { queueMessages = await _queueReference.GetMessagesAsync(batchCount); } else { queueMessages = await _queueReference.GetMessagesAsync(batchCount, visibilityTimeOut, queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } var queueMessagesList = queueMessages.ToList(); ProcessQueueBatchMessages?.Invoke(queueMessagesList); await DeleteBatchMessagesAsync(queueMessagesList, queueStorageOptions); } while ((deQueueCount -= batchCount) > 0); return(new Tuple <bool, CMPStorageError>(true, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, null)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, null)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <bool, CMPStorageError>(false, null)); } }
public async Task <Tuple <string, string, CMPStorageError> > PeekMessageAsync(CMPQueueStorageOptions queueStorageOptions = null) { try { if (_queueReference == null) { return(new Tuple <string, string, CMPStorageError>(null, null, null)); } CloudQueueMessage queueMessage = null; if (queueStorageOptions == null) { await _queueReference.PeekMessageAsync(); } else { await _queueReference.PeekMessageAsync(queueStorageOptions.QueueRequestOptions, queueStorageOptions.OperationContext, _tokenSource.Token); } return(new Tuple <string, string, CMPStorageError>(queueMessage.AsString, queueMessage.PopReceipt, null)); } catch (StorageException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <string, string, CMPStorageError>(null, null, error)); } catch (ArgumentException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <string, string, CMPStorageError>(null, null, error)); } catch (OperationCanceledException exception) { var error = CMPStorageError.CreateErrorFromException(exception); return(new Tuple <string, string, CMPStorageError>(null, null, error)); } }