private IMessage Run (MessageQueueTransactionType transactionType,
		                      RecieveDelegate r)
		{
			switch (transactionType) {
			case MessageQueueTransactionType.Single:
				using (RabbitMQMessageQueueTransaction tx = GetTx ()) {
					bool success = false;
					try {
						IMessage msg = Run (tx, r);
						tx.Commit ();
						success = true;
						return msg;
					} finally {
						if (!success)
							tx.Abort ();
					}
				}

			case MessageQueueTransactionType.None:
				return Run (r);

			default:
				throw new NotSupportedException(transactionType + " not supported");
			}
		}		
Exemple #2
0
        private IMessage DoReceive(MessageQueueTransactionType transactionType,
                                   TimeSpan timeout, IsMatch matcher, bool ack)
        {
            switch (transactionType)
            {
            case MessageQueueTransactionType.Single:
                using (RabbitMQMessageQueueTransaction tx = NewTx()) {
                    bool success = false;
                    try {
                        IMessage msg = DoReceive((IMessagingContext)tx, timeout, matcher, ack);
                        tx.Commit();
                        success = true;
                        return(msg);
                    } finally {
                        if (!success)
                        {
                            tx.Abort();
                        }
                    }
                }

            case MessageQueueTransactionType.None:
                return(DoReceive(timeout, matcher, true));

            default:
                throw new NotSupportedException(transactionType + " not supported");
            }
        }