Ejemplo n.º 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CimMethodResultObserver"/> class.
 /// </summary>
 /// <param name="session"></param>
 /// <param name="observable"></param>
 /// <param name="context"></param>
 public CimMethodResultObserver(
     CimSession session,
     IObservable <object> observable,
     CimResultContext context)
     : base(session, observable, context)
 {
 }
Ejemplo n.º 2
0
        /// <summary>
        /// <para>
        /// Convert ErrorRecord from exception object, <see cref="Exception"/>
        /// can be either <see cref="CimException"/> or general <see cref="Exception"/>.
        /// </para>
        /// </summary>
        /// <param name="inner"></param>
        /// <param name="context">The context starting the operation, which generated the error.</param>
        /// <param name="cimResultContext">The CimResultContext used to provide ErrorSource, etc. info.</param>
        /// <returns></returns>
        internal static ErrorRecord ErrorRecordFromAnyException(
            InvocationContext context,
            Exception inner,
            CimResultContext cimResultContext)
        {
            Debug.Assert(inner != null, "Caller should verify inner != null");

            CimException cimException = inner as CimException;

            if (cimException != null)
            {
                return(CreateFromCimException(context, cimException, cimResultContext));
            }

            var containsErrorRecord = inner as IContainsErrorRecord;

            if (containsErrorRecord != null)
            {
                return(InitializeErrorRecord(context,
                                             exception: inner,
                                             errorId: "CimCmdlet_" + containsErrorRecord.ErrorRecord.FullyQualifiedErrorId,
                                             errorCategory: containsErrorRecord.ErrorRecord.CategoryInfo.Category,
                                             cimResultContext: cimResultContext));
            }
            else
            {
                return(InitializeErrorRecord(context,
                                             exception: inner,
                                             errorId: "CimCmdlet_" + inner.GetType().Name,
                                             errorCategory: ErrorCategory.NotSpecified,
                                             cimResultContext: cimResultContext));
            }
        }
Ejemplo n.º 3
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CimResultObserver{T}"/> class.
 /// </summary>
 /// <param name="session"><see cref="CimSession"/> object that issued the operation.</param>
 /// <param name="observable">Operation that can be observed.</param>
 public CimResultObserver(CimSession session,
                          IObservable <object> observable,
                          CimResultContext cimResultContext)
 {
     this.CurrentSession = session;
     this.observable     = observable;
     this.context        = cimResultContext;
 }
Ejemplo n.º 4
0
        /// <summary>
        /// Create <see cref="ErrorRecord"/> from <see cref="CimException"/> object.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="cimException"></param>
        /// <param name="cimResultContext">The CimResultContext used to provide ErrorSource, etc. info.</param>
        /// <returns></returns>
        internal static ErrorRecord CreateFromCimException(
            InvocationContext context,
            CimException cimException,
            CimResultContext cimResultContext)
        {
            Debug.Assert(cimException != null, "Caller should verify cimException != null");

            return(InitializeErrorRecord(context, cimException, cimResultContext));
        }
Ejemplo n.º 5
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncResultErrorEventArgs"/> class.
 /// </summary>
 /// <param name="session"></param>
 /// <param name="observable"></param>
 /// <param name="error"></param>
 /// <param name="context"></param>
 public AsyncResultErrorEventArgs(
     CimSession session,
     IObservable <object> observable,
     Exception error,
     CimResultContext cimResultContext)
     : base(session, observable, AsyncResultType.Exception, cimResultContext)
 {
     this.error = error;
 }
Ejemplo n.º 6
0
 /// <summary>
 /// Initializes a new instance of the <see cref="AsyncResultEventArgsBase"/> class.
 /// </summary>
 /// <param name="session"></param>
 /// <param name="observable"></param>
 /// <param name="resultType"></param>
 /// <param name="context"></param>
 protected AsyncResultEventArgsBase(
     CimSession session,
     IObservable <object> observable,
     AsyncResultType resultType,
     CimResultContext cimResultContext)
 {
     this.session    = session;
     this.observable = observable;
     this.resultType = resultType;
     this.context    = cimResultContext;
 }
Ejemplo n.º 7
0
 /// <summary>
 /// Create <see cref="ErrorRecord"/> from <see cref="Exception"/> object.
 /// </summary>
 /// <param name="context"></param>
 /// <param name="exception"></param>
 /// <param name="errorId"></param>
 /// <param name="errorCategory"></param>
 /// <param name="cimResultContext">The CimResultContext used to provide ErrorSource, etc. info.</param>
 /// <returns></returns>
 internal static ErrorRecord InitializeErrorRecord(
     InvocationContext context,
     Exception exception,
     string errorId,
     ErrorCategory errorCategory,
     CimResultContext cimResultContext)
 {
     return(InitializeErrorRecordCore(
                context,
                exception: exception,
                errorId: errorId,
                errorCategory: errorCategory,
                cimResultContext: cimResultContext));
 }
Ejemplo n.º 8
0
        /// <summary>
        /// Create <see cref="ErrorRecord"/> from <see cref="Exception"/> object.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="exception"></param>
        /// <param name="errorId"></param>
        /// <param name="errorCategory"></param>
        /// <param name="cimResultContext">The CimResultContext used to provide ErrorSource, etc. info.</param>
        /// <returns></returns>
        internal static ErrorRecord InitializeErrorRecordCore(
            InvocationContext context,
            Exception exception,
            string errorId,
            ErrorCategory errorCategory,
            CimResultContext cimResultContext)
        {
            object theTargetObject = null;

            if (cimResultContext != null)
            {
                theTargetObject = cimResultContext.ErrorSource;
            }

            if (theTargetObject == null)
            {
                if (context != null)
                {
                    if (context.TargetCimInstance != null)
                    {
                        theTargetObject = context.TargetCimInstance;
                    }
                }
            }

            ErrorRecord coreErrorRecord = new(
                exception : exception,
                errorId : errorId,
                errorCategory : errorCategory,
                targetObject : theTargetObject);

            if (context == null)
            {
                return(coreErrorRecord);
            }

            System.Management.Automation.Remoting.OriginInfo originInfo = new(
                context.ComputerName,
                Guid.Empty);

            ErrorRecord errorRecord = new System.Management.Automation.Runspaces.RemotingErrorRecord(
                coreErrorRecord,
                originInfo);

            DebugHelper.WriteLogEx("Created RemotingErrorRecord.", 0);
            return(errorRecord);
        }
Ejemplo n.º 9
0
        /// <summary>
        /// Create <see cref="ErrorRecord"/> from <see cref="CimException"/> object.
        /// </summary>
        /// <param name="context"></param>
        /// <param name="cimException"></param>
        /// <param name="cimResultContext">The CimResultContext used to provide ErrorSource, etc. info.</param>
        /// <returns></returns>
        internal static ErrorRecord InitializeErrorRecord(
            InvocationContext context,
            CimException cimException,
            CimResultContext cimResultContext)
        {
            ErrorRecord errorRecord = InitializeErrorRecordCore(
                context,
                exception: cimException,
                errorId: cimException.MessageId ?? "MiClientApiError_" + cimException.NativeErrorCode,
                errorCategory: ConvertCimExceptionToErrorCategory(cimException),
                cimResultContext: cimResultContext);

            if (cimException.ErrorData != null)
            {
                errorRecord.CategoryInfo.TargetName = cimException.ErrorSource;
            }

            return(errorRecord);
        }
Ejemplo n.º 10
0
 /// <summary>
 /// Initializes a new instance of the <see cref="CimWriteError"/> class
 /// with the specified <see cref="Exception"/>.
 /// </summary>
 /// <param name="exception"></param>
 public CimWriteError(Exception exception, InvocationContext context, CimResultContext cimResultContext)
 {
     this.Exception            = exception;
     this.CimInvocationContext = context;
     this.ResultContext        = cimResultContext;
 }