Example #1
0
        /// <summary>
        /// block the ps thread until ACK message or Error happened.
        /// </summary>
        private void WaitForAckMessage()
        {
            DebugHelper.WriteLogEx();
            this.ackedEvent.Wait();
            if (this.exception != null)
            {
                DebugHelper.WriteLogEx("error happened", 0);
                if (this.Cmdlet != null)
                {
                    DebugHelper.WriteLogEx("Throw Terminating error", 1);

                    // throw terminating error
                    ErrorRecord errorRecord = ErrorToErrorRecord.ErrorRecordFromAnyException(
                        new InvocationContext(this.TargetComputerName, null), this.exception, null);
                    this.Cmdlet.ThrowTerminatingError(errorRecord);
                }
                else
                {
                    DebugHelper.WriteLogEx("Throw exception", 1);
                    // throw exception out
                    throw this.exception;
                }
            }
            DebugHelper.WriteLogEx("ACK happened", 0);
        }
Example #2
0
        public override void Execute(CmdletOperationBase cmdlet)
        {
            Exception cimException;

            try
            {
                try
                {
                    if (this.error != null)
                    {
                        cimException = new CimException(this.error);
                    }
                    else
                    {
                        cimException = this.Exception;
                    }
                    Exception exception = cimException;
                    cmdlet.WriteError(ErrorToErrorRecord.ErrorRecordFromAnyException(this.invocationContext, exception, this.cimResultContext));
                    this.responseType = CimResponseType.Yes;
                }
                catch
                {
                    this.responseType = CimResponseType.NoToAll;
                    throw;
                }
            }
            finally
            {
                this.OnComplete();
            }
        }
Example #3
0
        internal static ErrorCategory ConvertCimExceptionToErrorCategory(CimException cimException)
        {
            ErrorCategory errorCategory = ErrorCategory.NotSpecified;

            if (cimException.ErrorData != null)
            {
                errorCategory = ErrorToErrorRecord.ConvertCimErrorToErrorCategory(cimException.ErrorData);
            }
            if (errorCategory == ErrorCategory.NotSpecified)
            {
                errorCategory = ErrorToErrorRecord.ConvertCimNativeErrorCodeToErrorCategory(cimException.NativeErrorCode);
            }
            return(errorCategory);
        }
Example #4
0
        internal static ErrorRecord InitializeErrorRecord(InvocationContext context, CimException cimException, CimResultContext cimResultContext)
        {
            InvocationContext invocationContext = context;
            CimException      cimException1     = cimException;
            string            messageId         = cimException.MessageId;
            string            str = messageId;

            if (messageId == null)
            {
                str = string.Concat("MiClientApiError_", cimException.NativeErrorCode);
            }
            ErrorRecord errorSource = ErrorToErrorRecord.InitializeErrorRecordCore(invocationContext, cimException1, str, ErrorToErrorRecord.ConvertCimExceptionToErrorCategory(cimException), cimResultContext);

            if (cimException.ErrorData != null)
            {
                errorSource.CategoryInfo.TargetName = cimException.ErrorSource;
            }
            return(errorSource);
        }
Example #5
0
        internal static ErrorRecord ErrorRecordFromAnyException(InvocationContext context, Exception inner, CimResultContext cimResultContext)
        {
            CimException cimException = inner as CimException;

            if (cimException == null)
            {
                IContainsErrorRecord containsErrorRecord = inner as IContainsErrorRecord;
                if (containsErrorRecord == null)
                {
                    return(ErrorToErrorRecord.InitializeErrorRecord(context, inner, string.Concat("CimCmdlet_", inner.GetType().Name), ErrorCategory.NotSpecified, cimResultContext));
                }
                else
                {
                    return(ErrorToErrorRecord.InitializeErrorRecord(context, inner, string.Concat("CimCmdlet_", containsErrorRecord.ErrorRecord.FullyQualifiedErrorId), containsErrorRecord.ErrorRecord.CategoryInfo.Category, cimResultContext));
                }
            }
            else
            {
                return(ErrorToErrorRecord.CreateFromCimException(context, cimException, cimResultContext));
            }
        }
Example #6
0
        /// <summary>
        /// <para>
        /// Write error to pipeline
        /// </para>
        /// </summary>
        /// <param name="cmdlet"></param>
        public override void Execute(CmdletOperationBase cmdlet)
        {
            Debug.Assert(cmdlet != null, "Caller should verify that cmdlet != null");
            try
            {
                Exception errorException = (error != null) ? new CimException(error) : this.Exception;

                // PS engine takes care of handling error action
                cmdlet.WriteError(ErrorToErrorRecord.ErrorRecordFromAnyException(this.invocationContext, errorException, this.cimResultContext));

                // if user wants to continue, we will get here
                this.responseType = CimResponseType.Yes;
            }
            catch
            {
                this.responseType = CimResponseType.NoToAll;
                throw;
            }
            finally
            {
                // unblocking the waiting thread
                this.OnComplete();
            }
        }
Example #7
0
 internal static ErrorRecord InitializeErrorRecord(InvocationContext context, Exception exception, string errorId, ErrorCategory errorCategory, CimResultContext cimResultContext)
 {
     return(ErrorToErrorRecord.InitializeErrorRecordCore(context, exception, errorId, errorCategory, cimResultContext));
 }
Example #8
0
 internal static ErrorRecord CreateFromCimException(InvocationContext context, CimException cimException, CimResultContext cimResultContext)
 {
     return(ErrorToErrorRecord.InitializeErrorRecord(context, cimException, cimResultContext));
 }