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"); } }
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"); } }