public async Task <IOperationMessage> GetOperationStatusAsync(Guid id) { if (!Messages.Any(m => m.Id == id)) { IOperationMessage message = null; await Task.Run(async() => { int counter = 0; //TODO: Possibly use a timer here may underload fail and always fallback. while (!Messages.Any(m => m.Id == id) && IsConnected == true) { if (counter == 5) { break; } counter++; Thread.Sleep(300); } if (Messages.Any(m => m.Id == id)) { message = PopMessage(id, counter); return; } else { message = await _operationsClient.GetOperationMessageAsync(id); } }); return(message); } return(PopMessage(id)); }
/// <summary> /// Creates a new operation message. /// </summary> /// <param name="message">The message to create.</param> public void CreateOperationMessage(IOperationMessage message) { this.context.CreateOperationMessage( message.Operation.Id, message.Operation.TimeStamp, message.Message.Type, message.Message.TextHash, message.Message.Text); }
private void MessageRecievedHandler(object sender, IOperationMessage message) { _logger.LogInformation("Message recived with status: " + message.Status); Messages.Add(message); }
/// <summary> /// Creates a new operation message. /// </summary> /// <param name="message">The message to create.</param> public void CreateOperationMessage(IOperationMessage message) { this.Invoke( () => this.repository.CreateOperationMessage(message), nameof(this.repository.CreateOperationMessage)); }