public void ResultReceived(SendMessageResultCommand result)
        {
            if (result != null)
            {
                Pair<SendMessageCommand, SettableFuture<bool>> pair = null;
                lock (syncRoot)
                {
                    commands.TryRemove(result.Header.CorrelationId, out pair);
                }
                if (pair != null)
                {

                    try
                    {
                        SendMessageCommand sendMessageCommand = pair.Key;
                        SettableFuture<bool> future = pair.Value;
                        if (IsResultSuccess(result))
                        {
                            future.Set(true);
                        }
                        else
                        {
                            future.Set(false);
                        }
                        sendMessageCommand.OnResultReceived(result);
                        Tracking(sendMessageCommand, true);
                    }
                    catch (Exception ex)
                    {
                        log.Warn(ex);
                    }
                }
            }
        }
Ejemplo n.º 2
0
 public void OnResultReceived(SendMessageResultCommand result)
 {
     foreach (var entry in futures)
     {
         if (result.IsSuccess(entry.Key))
             entry.Value.Set(new SendResult());
         else
             entry.Value.SetException(new MessageSendException("Send failed"));
     }
 }
        private bool IsResultSuccess(SendMessageResultCommand result)
        {
            Dictionary<int, bool> successes = result.Successes;
            foreach (bool success in successes.Values)
            {
                if (!success)
                {
                    return false;
                }
            }

            return true;
        }