示例#1
0
        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.");
        }
示例#2
0
        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();
                }
            }
        }
示例#3
0
        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);
            }
        }
示例#4
0
 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}'.");
 }