/// <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) { }
/// <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)); } }
/// <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; }
/// <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)); }
/// <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; }
/// <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; }
/// <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)); }
/// <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); }
/// <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); }
/// <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; }