private void OnMqMessageReceived(object sender, MessageReceivedEventArgs eventArgs) { var stopwatch = Stopwatch.StartNew(); if (ExecutionLog.IsDebugEnabled) { ExecutionLog.Debug($"Received ticket response for correlationId={eventArgs.CorrelationId} and routingKey={eventArgs.RoutingKey}. JSON={eventArgs.JsonBody}"); } else { ExecutionLog.Info($"Received ticket response for correlationId={eventArgs.CorrelationId}."); } ISdkTicket ticket; try { ticket = _entitiesMapper.GetTicketResponseFromJson(eventArgs.JsonBody, eventArgs.RoutingKey, eventArgs.ResponseType, eventArgs.CorrelationId, eventArgs.AdditionalInfo); ((ConnectionStatus)ConnectionStatus).TicketReceived(ticket.TicketId); } catch (Exception e) { ExecutionLog.Debug("Received message deserialization failed.", e); //deserialization failed OnMqMessageDeserializationFailed(sender, new MessageDeserializationFailedEventArgs(Encoding.UTF8.GetBytes(eventArgs.JsonBody))); return; } // first clean it from awaiting ticket response lock (_lockForTicketsForNonBlockingRequestsCache) { if (_ticketsForNonBlockingRequests.Contains(ticket.TicketId)) { _ticketsForNonBlockingRequests.Remove(ticket.TicketId); } } //ExecutionLog.Debug($"Processing ticket response from JSON (time: {stopwatch.ElapsedMilliseconds} ms)."); // check if it was called from SendBlocking if (_autoResetEventsForBlockingRequests.ContainsKey(ticket.TicketId)) { _responsesFromBlockingRequests.TryAdd(ticket.TicketId, ticket); ReleaseAutoResetEventFromDictionary(ticket.TicketId); return; } //ExecutionLog.Debug($"Processing ticket response from AutoResetEvent (time: {stopwatch.ElapsedMilliseconds} ms)."); //else raise event var ticketReceivedEventArgs = new TicketResponseReceivedEventArgs(ticket); Metric.Context("MtsSdk").Meter("TicketReceived", Unit.Items).Mark(ticketReceivedEventArgs.Type.ToString()); ExecutionLog.Info($"Invoking TicketResponseReceived event for {eventArgs.ResponseType} response with correlationId={eventArgs.CorrelationId}."); TicketResponseReceived?.Invoke(this, ticketReceivedEventArgs); stopwatch.Stop(); ExecutionLog.Info($"Processing TicketResponseReceived event for {eventArgs.ResponseType} response with correlationId={eventArgs.CorrelationId} finished in {stopwatch.ElapsedMilliseconds} ms."); }
private void OnTicketResponseReceived(object sender, TicketResponseReceivedEventArgs e) { _log.Info($"Received {e.Type}Response for ticket '{e.Response.TicketId}'."); if (e.Type == TicketResponseType.Ticket) { var task = _ticketHandler.HandleTicketResponse((ITicketResponse)e.Response); if (task != null) { task.Wait(); task.Dispose(); } } else if (e.Type == TicketResponseType.TicketCancel) { var task2 = _ticketHandler.HandleTicketCancelResponse((ITicketCancelResponse)e.Response); if (task2 != null) { task2.Wait(); task2.Dispose(); } } else if (e.Type == TicketResponseType.TicketCashout) { var task3 = _ticketHandler.HandleTicketCashoutResponse((ITicketCashoutResponse)e.Response); if (task3 != null) { task3.Wait(); task3.Dispose(); } } }
private void OnTicketResponseReceived(object sender, TicketResponseReceivedEventArgs e) { _log.Info($"Received {e.Type}Response for ticket '{e.Response.TicketId}'."); if (e.Type == TicketResponseType.Ticket) { HandleTicketResponse((ITicketResponse)e.Response); } else if (e.Type == TicketResponseType.TicketCancel) { HandleTicketCancelResponse((ITicketCancelResponse)e.Response); } }
private void OnTicketResponseReceived(object sender, TicketResponseReceivedEventArgs e) { //in the blocking scenario this should never be raised _log.Info($"Received {e.Type}Response for ticket '{e.Response.TicketId}'."); }