private Func<BasicReturn, bool> WrapCallback(WeakReference callback, RogerGuid messageId)
        {
            return @return =>
            {
                if (!callback.IsAlive)
                    return true;

                if (@return.MessageId == messageId)
                {
                    log.DebugFormat("Invoking basic return callback for message id {0}", @return.MessageId);
                    ((Action<BasicReturn>)callback.Target)(@return);
                    return true;
                }

                return false;
            };
        }
        public void Should_enqueue_reply_when_correlation_id_same_as_request_id()
        {
            aggregator.Notify(new ConsumingEnabled(new RogerEndpoint("whatever"), connection));

            var requestId = RogerGuid.NewGuid();

            sut.Reply(new MyReply(), new CurrentMessageInformation {
                MessageId = requestId, Endpoint = new RogerEndpoint("someEndpoint")
            }, null, true, true);

            Thread.Sleep(100);

            model.Received().BasicPublish(Arg.Any <string>(),
                                          Arg.Any <string>(),
                                          true,
                                          false,
                                          Arg.Is <IBasicProperties>(p => p.CorrelationId == requestId),
                                          Arg.Any <byte[]>());
        }
        private Func <BasicReturn, bool> WrapCallback(WeakReference callback, RogerGuid messageId)
        {
            return(@return =>
            {
                if (!callback.IsAlive)
                {
                    return true;
                }

                if (@return.MessageId == messageId)
                {
                    log.DebugFormat("Invoking basic return callback for message id {0}", @return.MessageId);
                    ((Action <BasicReturn>)callback.Target)(@return);
                    return true;
                }

                return false;
            });
        }
Example #4
0
 public RogerGuid Next()
 {
     return(RogerGuid.NewGuid());
 }
 public void Subscribe(RogerGuid messageId, Action <BasicReturn> callback)
 {
     callbacks.TryAdd(messageId, WrapCallback(new WeakReference(callback), messageId));
 }
 public void Subscribe(RogerGuid messageId, Action<BasicReturn> callback)
 {
     callbacks.TryAdd(messageId, WrapCallback(new WeakReference(callback), messageId));
 }
Example #7
0
 internal BasicReturn(RogerGuid messageId, ushort replyCode, string replyText)
 {
     MessageId = messageId;
     ReplyCode = replyCode;
     ReplyText = replyText;
 }
Example #8
0
 public void Should_create_new_random_guid()
 {
     Assert.AreNotEqual(RogerGuid.NewGuid(), new RogerGuid());
 }
Example #9
0
 internal BasicReturn(RogerGuid messageId, ushort replyCode, string replyText)
 {
     MessageId = messageId;
     ReplyCode = replyCode;
     ReplyText = replyText;
 }