public MoveReceiveResult TryMoveMessage(long lookupId, MsmqQueue destinationQueue, MsmqTransactionMode transactionMode) { MsmqQueueHandle sourceQueueHandle = GetHandle(); MsmqQueueHandle destinationQueueHandle = destinationQueue.GetHandle(); int error; try { if (RequiresDtcTransaction(transactionMode)) { error = TryMoveMessageDtcTransacted(lookupId, sourceQueueHandle, destinationQueueHandle, transactionMode); } else { error = UnsafeNativeMethods.MQMoveMessage(sourceQueueHandle, destinationQueueHandle, lookupId, (IntPtr)GetTransactionConstant(transactionMode)); } } catch (ObjectDisposedException ex) { MsmqDiagnostics.ExpectedException(ex); return(MoveReceiveResult.Succeeded); } if (error != 0) { if (error == UnsafeNativeMethods.MQ_ERROR_MESSAGE_NOT_FOUND) { return(MoveReceiveResult.MessageNotFound); } else if (error == UnsafeNativeMethods.MQ_ERROR_MESSAGE_LOCKED_UNDER_TRANSACTION) { return(MoveReceiveResult.MessageLockedUnderTransaction); } else if (IsErrorDueToStaleHandle(error)) { HandleIsStale(sourceQueueHandle); destinationQueue.HandleIsStale(destinationQueueHandle); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MsmqException(SR.GetString(SR.MsmqSendError, MsmqError.GetErrorString(error)), error)); } return(MoveReceiveResult.Succeeded); }
private static bool SupportsAccessMode(string formatName, int accessType, out MsmqException msmqException) { msmqException = null; try { using (MsmqQueue queue = new MsmqQueue(formatName, accessType)) { queue.GetHandle(); } } catch (Exception exception) { msmqException = exception as MsmqException; if (msmqException == null) { throw; } return(false); } return(true); }
public MoveReceiveResult TryMoveMessage(long lookupId, MsmqQueue destinationQueue, MsmqTransactionMode transactionMode) { int num; MsmqQueueHandle sourceQueueHandle = this.GetHandle(); MsmqQueueHandle handle = destinationQueue.GetHandle(); try { if (this.RequiresDtcTransaction(transactionMode)) { num = this.TryMoveMessageDtcTransacted(lookupId, sourceQueueHandle, handle, transactionMode); } else { num = UnsafeNativeMethods.MQMoveMessage(sourceQueueHandle, handle, lookupId, (IntPtr)this.GetTransactionConstant(transactionMode)); } } catch (ObjectDisposedException exception) { MsmqDiagnostics.ExpectedException(exception); return(MoveReceiveResult.Succeeded); } switch (num) { case 0: return(MoveReceiveResult.Succeeded); case -1072824184: return(MoveReceiveResult.MessageNotFound); case -1072824164: return(MoveReceiveResult.MessageLockedUnderTransaction); } if (IsErrorDueToStaleHandle(num)) { this.HandleIsStale(sourceQueueHandle); destinationQueue.HandleIsStale(handle); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MsmqException(System.ServiceModel.SR.GetString("MsmqSendError", new object[] { MsmqError.GetErrorString(num) }), num)); }
public MoveReceiveResult TryMoveMessage(long lookupId, MsmqQueue destinationQueue, MsmqTransactionMode transactionMode) { MsmqQueueHandle sourceQueueHandle = GetHandle(); MsmqQueueHandle destinationQueueHandle = destinationQueue.GetHandle(); int error; try { if (RequiresDtcTransaction(transactionMode)) { error = TryMoveMessageDtcTransacted(lookupId, sourceQueueHandle, destinationQueueHandle, transactionMode); } else { error = UnsafeNativeMethods.MQMoveMessage(sourceQueueHandle, destinationQueueHandle, lookupId, (IntPtr)GetTransactionConstant(transactionMode)); } } catch (ObjectDisposedException ex) { MsmqDiagnostics.ExpectedException(ex); return MoveReceiveResult.Succeeded; } if (error != 0) { if (error == UnsafeNativeMethods.MQ_ERROR_MESSAGE_NOT_FOUND) return MoveReceiveResult.MessageNotFound; else if (error == UnsafeNativeMethods.MQ_ERROR_MESSAGE_LOCKED_UNDER_TRANSACTION) return MoveReceiveResult.MessageLockedUnderTransaction; else if (IsErrorDueToStaleHandle(error)) { HandleIsStale(sourceQueueHandle); destinationQueue.HandleIsStale(destinationQueueHandle); } throw DiagnosticUtility.ExceptionUtility.ThrowHelperError(new MsmqException(SR.GetString(SR.MsmqSendError, MsmqError.GetErrorString(error)), error)); } return MoveReceiveResult.Succeeded; }
static bool SupportsAccessMode(string formatName, int accessType, out MsmqException msmqException) { msmqException = null; try { using (MsmqQueue msmqQueue = new MsmqQueue(formatName, accessType)) { msmqQueue.GetHandle(); } } catch (Exception ex) { msmqException = ex as MsmqException; if (null != msmqException) { return false; } throw; } return true; }