예제 #1
0
 private void HandleSlaveException(
     Exception exc, SlaveFailMethod method, SlaveFailAction action)
 {
     if (action == SlaveFailAction.Propogate)
     {
         throw exc;
     }
     else if (action == SlaveFailAction.Ignore)
     {
         // Intentionally Empty
     }
     else if (action == SlaveFailAction.Filter)
     {
         FilterException(exc, method);
     }
     else
     {
         Debug.Assert(false, "Unhandled SlaveFailAction");
     }
 }
예제 #2
0
 private void HandleSlaveException(
     Exception exc, SlaveFailMethod method, SlaveFailAction action)
 {
     if (action == SlaveFailAction.Propogate)
     {
         throw exc;
     }
     else if (action == SlaveFailAction.Ignore)
     {
         // Intentionally Empty
     }
     else if (action == SlaveFailAction.Filter)
     {
         FilterException(exc, method);
     }
     else
     {
         throw new InvalidOperationException("Unhandled SlaveFailAction.");
     }
 }
예제 #3
0
        private void FilterException(Exception exc, SlaveFailMethod method)
        {
            // Allow a user-provided filter function to
            // handle the errors.
            SlaveFailAction action = SlaveFailAction.Filter;

            if (method == SlaveFailMethod.Read)
            {
                action = m_slaveReadFailFilter(this, method, exc);
            }
            else if (method == SlaveFailMethod.Write)
            {
                action = m_slaveWriteFailFilter(this, method, exc);
            }
            else if (method == SlaveFailMethod.Seek)
            {
                action = m_slaveSeekFailFilter(this, method, exc);
            }
            else
            {
                Debug.Assert(false, "Unhandled SlaveFailMethod.");
            }

            if (action == SlaveFailAction.Filter)
            {
                throw new InvalidOperationException(
                          "SlaveFailAction.Filter is not a valid return "
                          + "value for the ReadFailFilter delegate.",
                          exc
                          );
            }

            // Handle the exception in the manner specified by the filter.
            // This will always be an indirect recursive call into
            // HandleSlaveException since this method is always called by
            // HandleSlaveException itself, but this time the action can't
            // possibly be 'Filter' (see above), so there can be no
            // infinite recursion.
            HandleSlaveException(exc, method, action);
        }
예제 #4
0
 private void HandleSlaveException(
   Exception exc, SlaveFailMethod method, SlaveFailAction action)
 {
   if (action == SlaveFailAction.Propogate) {
     throw exc;
   }
   else if (action == SlaveFailAction.Ignore) {
     // Intentionally Empty
   }
   else if (action == SlaveFailAction.Filter) {
     FilterException(exc, method);
   }
   else {
     Debug.Assert(false, "Unhandled SlaveFailAction");
   }
 }
예제 #5
0
 private void HandleSlaveException(
     Exception exc, SlaveFailMethod method, SlaveFailAction action)
 {
     if (action == SlaveFailAction.Propogate)
       {
     throw exc;
       }
       else if (action == SlaveFailAction.Ignore)
       {
     // Intentionally Empty
       }
       else if (action == SlaveFailAction.Filter)
       {
     FilterException(exc, method);
       }
       else
       {
     throw new InvalidOperationException("Unhandled SlaveFailAction.");
       }
 }