internal void ClassCallback( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, MI_Class ClassHandle, bool moreResults, MI_Result operationResult, String errorMessage, MI_Instance errorDetailsHandle) { CimClass currentItem = null; if ((ClassHandle != null) && (!ClassHandle.IsNull)) { if (!_shortenLifetimeOfResults) { ClassHandle = ClassHandle.Clone(); } currentItem = new CimClass(ClassHandle); } try { this.ProcessNativeCallback(callbackProcessingContext, currentItem, moreResults, operationResult, errorMessage, errorDetailsHandle); } finally { if (_shortenLifetimeOfResults) { if (currentItem != null) { currentItem.Dispose(); } } } }
internal void WriteErrorCallbackInternal( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, MI_Instance instanceHandle, out MI_OperationCallback_ResponseType response) { response = MI_OperationCallback_ResponseType.Yes; if (_writeErrorCallback != null) { Debug.Assert(instanceHandle != null, "Caller should verify instance != null"); CimInstance cimInstance = null; try { if (!instanceHandle.IsNull) { cimInstance = new CimInstance(instanceHandle.Clone()); var callbacksReceiverBase = (CimAsyncCallbacksReceiverBase)callbackProcessingContext.ManagedOperationContext; CimResponseType userResponse = CimResponseType.None; callbacksReceiverBase.CallIntoUserCallback( callbackProcessingContext, delegate { userResponse = _writeErrorCallback(cimInstance); }); response = (MI_OperationCallback_ResponseType)userResponse; } } finally { if (cimInstance != null) { cimInstance.Dispose(); } } } }
internal override MI_Result NativeMoveNext(MI_Operation operationHandle, out CimClass currentItem, out bool moreResults, out MI_Result operationResult, out string errorMessage, out MI_Instance errorDetailsHandle) { Debug.Assert(operationHandle != null, "Caller should verify operationHandle != null"); currentItem = null; MI_Class classHandle; MI_Result functionResult = operationHandle.GetClass( out classHandle, out moreResults, out operationResult, out errorMessage, out errorDetailsHandle); if ((classHandle != null) && !classHandle.IsNull) { if (!this.ShortenLifetimeOfResults) { classHandle = classHandle.Clone(); } currentItem = new CimClass(classHandle); } return(functionResult); }
internal override MI_Result NativeMoveNext(MI_Operation operationHandle, out CimSubscriptionResult currentItem, out bool moreResults, out MI_Result operationResult, out string errorMessage, out MI_Instance errorDetailsHandle) { Debug.Assert(operationHandle != null, "Caller should verify operationHandle != null"); currentItem = null; MI_Instance instanceHandle; string bookmark; string machineID; MI_Result functionResult = operationHandle.GetIndication( out instanceHandle, out bookmark, out machineID, out moreResults, out operationResult, out errorMessage, out errorDetailsHandle); if ((instanceHandle != null) && !instanceHandle.IsNull) { if (!this.ShortenLifetimeOfResults) { instanceHandle = instanceHandle.Clone(); } currentItem = new CimSubscriptionResult(instanceHandle, bookmark, machineID); } return(functionResult); }
public void BadHost() { MI_Session badSession; MI_Instance extendedError = null; MI_Result res = StaticFixtures.Application.NewSession(null, "badhost", MI_DestinationOptions.Null, MI_SessionCreationCallbacks.Null, out extendedError, out badSession); MIAssert.Succeeded(res, "Expect simple NewSession to succeed"); MI_Operation operation = null; badSession.TestConnection(0, null, out operation); bool moreResults; MI_Result result; string errorMessage = null; MI_Instance instance = null; MI_Instance errorDetails = null; res = operation.GetInstance(out instance, out moreResults, out result, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect the GetInstance operation to succeed"); MIAssert.Failed(result, "Expect the actual retrieval to fail"); Assert.True(!String.IsNullOrEmpty(errorMessage), "Expect error message to be available"); res = operation.Close(); MIAssert.Succeeded(res, "Expect to be able to close operation now"); res = badSession.Close(IntPtr.Zero, null); MIAssert.Succeeded(res, "Expect to be able to close the bad session"); }
internal abstract MI_Result NativeMoveNext( MI_Operation operationHandle, out T currentItem, out bool moreResults, out MI_Result operationResult, out string errorMessage, out MI_Instance errorDetailsHandle);
internal override MI_Result NativeMoveNext(MI_Operation operationHandle, out CimInstance currentItem, out bool moreResults, out MI_Result operationResult, out string errorMessage, out MI_Instance errorDetailsHandle) { Debug.Assert(operationHandle != null, "Caller should verify operationHandle != null"); currentItem = null; MI_Instance instanceHandle; MI_Result functionResult = operationHandle.GetInstance( out instanceHandle, out moreResults, out operationResult, out errorMessage, out errorDetailsHandle); if ((instanceHandle != null) && !instanceHandle.IsNull) { if (!this.ShortenLifetimeOfResults) { instanceHandle = instanceHandle.Clone(); } currentItem = new CimInstance(instanceHandle); currentItem.SetCimSessionComputerName(this._CimSessionComputerName); currentItem.SetCimSessionInstanceId(this._CimSessionInstanceID); } return(functionResult); }
public void SimpleEnumerateInstance() { MI_Operation operation = null; this.Session.EnumerateInstances(MI_OperationFlags.MI_OPERATIONFLAGS_DEFAULT_RTTI, MI_OperationOptions.Null, TestEnumerateInstanceNamespace, TestEnumerateInstanceClassName, false, null, out operation); bool moreResults = true; MI_Instance clonedInstance = null; MI_Result secondaryResult; string errorMessage = null; MI_Instance instanceOut = null; MI_Instance errorDetails = null; var res = operation.GetInstance(out instanceOut, out moreResults, out secondaryResult, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect the first GetInstance call to succeed"); MIAssert.Succeeded(secondaryResult, "Expect the logical result of the GetInstance call to succeed"); if (!instanceOut.IsNull) { res = instanceOut.Clone(out clonedInstance); MIAssert.Succeeded(res, "Expect the clone to succeed"); } while (moreResults) { res = operation.GetInstance(out instanceOut, out moreResults, out secondaryResult, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect GetInstance to succeed even if we don't want the result"); MIAssert.Succeeded(secondaryResult, "Expect the logical result of the GetInstance call to succeed even if we don't want the result"); } res = operation.Close(); MIAssert.Succeeded(res, "Expect operation to close successfully"); string className = null; res = clonedInstance.GetClassName(out className); MIAssert.Succeeded(res, "Expect GetClassName to succeed"); Assert.Equal(TestEnumerateInstanceClassName, className, "Expect the class name to be the one we queried"); MI_Value elementValue = null; MI_Type elementType; MI_Flags elementFlags; UInt32 elementIndex; res = clonedInstance.GetElement(TestEnumerateInstanceStringPropertyName, out elementValue, out elementType, out elementFlags, out elementIndex); MIAssert.Succeeded(res, "Expect GetElement to succeed"); Assert.Equal(MI_Type.MI_STRING, elementType, "Expect that the property is registered as a string"); Assert.Equal(TestEnumerateInstanceStringPropertyFlags, elementFlags, "Expect the element flags to also be properly available from the query"); Assert.Equal(TestEnumerateInstanceStringPropertyValue, elementValue.String, "Expect the machine name to have survived the whole journey"); }
public IEnumerator <TItem> GetEnumerator() { TEnumerator enumerator = this.CreateEnumerator(); CimOperation operation; MI_Operation operationHandle = this._operationStarter(enumerator); operation = new CimOperation(operationHandle, this._cancellationToken); enumerator.SetOperation(operation); return(enumerator); }
internal CimOperation(MI_Operation handle, CancellationToken?cancellationToken) { Debug.Assert(handle != null, "Caller should verify that handle != null"); handle.AssertValidInternalState(); this._handle = handle; if (cancellationToken.HasValue) { this._cancellationTokenRegistration = cancellationToken.Value.Register( () => this.Cancel(CancellationMode.ThrowOperationCancelledException)); } }
internal void WriteMessageCallbackInternal( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, UInt32 channel, string message) { if (_writeMessageCallback != null) { var callbacksReceiverBase = (CimAsyncCallbacksReceiverBase)callbackProcessingContext.ManagedOperationContext; callbacksReceiverBase.CallIntoUserCallback( callbackProcessingContext, () => _writeMessageCallback(channel, message)); } }
private void WriteProgressCallbackInternal( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, string activity, string currentOperation, string statusDescription, UInt32 percentageCompleted, UInt32 secondsRemaining) { if (_writeProgressCallback != null) { var callbacksReceiverBase = (CimAsyncCallbacksReceiverBase)callbackProcessingContext.ManagedOperationContext; callbacksReceiverBase.CallIntoUserCallback( callbackProcessingContext, () => _writeProgressCallback(activity, currentOperation, statusDescription, percentageCompleted, secondsRemaining)); } }
public IDisposable Subscribe(IObserver <TResult> observer) { if (observer == null) { throw new ArgumentNullException("observer"); } TObserverProxy observerProxy = this.CreateObserverProxy(observer); observerProxy.SetReportOperationStarted(this._reportOperationStarted); MI_Operation operationHandle = this._operationStarter(observerProxy); CimOperation operation = new CimOperation(operationHandle, this._cancellationToken); observerProxy.SetOperation(operation); return(new CimAsyncCancellationDisposable(operation)); }
internal void PromptUserCallbackInternal( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, string message, MI_PromptType promptType, out MI_OperationCallback_ResponseType response) { response = MI_OperationCallback_ResponseType.Yes; if (_promptUserCallback != null) { var callbacksReceiverBase = (CimAsyncCallbacksReceiverBase)callbackProcessingContext.ManagedOperationContext; CimResponseType userResponse = CimResponseType.None; callbacksReceiverBase.CallIntoUserCallback( callbackProcessingContext, delegate { userResponse = _promptUserCallback(message, (CimPromptType)promptType); }); response = (MI_OperationCallback_ResponseType)userResponse; } }
public void TestSessionPositive() { MI_Operation operation = null; this.Session.TestConnection(MI_OperationFlags.Default, null, out operation); bool moreResults; MI_Result result; string errorMessage = null; MI_Instance instance = null; MI_Instance errorDetails = null; var res = operation.GetInstance(out instance, out moreResults, out result, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect GetInstance result to succeed"); MIAssert.Succeeded(result, "Expect actual operation result to be success"); res = operation.Close(); MIAssert.Succeeded(res, "Expect to be able to close completed operation"); }
internal void InstanceResultCallback( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, MI_Instance instanceHandle, bool moreResults, MI_Result operationResult, String errorMessage, MI_Instance errorDetailsHandle) { CimMethodResult currentItem = null; if ((instanceHandle != null) && (!instanceHandle.IsNull)) { if (!_shortenLifetimeOfResults) { instanceHandle = instanceHandle.Clone(); } var backingInstance = new CimInstance(instanceHandle); backingInstance.SetCimSessionComputerName(this._CimSessionComputerName); backingInstance.SetCimSessionInstanceId(this._CimSessionInstanceID); currentItem = new CimMethodResult(backingInstance); } try { this.ProcessNativeCallback(callbackProcessingContext, currentItem, moreResults, operationResult, errorMessage, errorDetailsHandle); } finally { if (_shortenLifetimeOfResults) { if (currentItem != null) { currentItem.Dispose(); } } } }
internal void IndicationResultCallback( CimOperationCallbackProcessingContext callbackProcessingContext, MI_Operation operationHandle, MI_Instance instanceHandle, String bookMark, String machineID, bool moreResults, MI_Result operationResult, String errorMessage, MI_Instance errorDetailsHandle) { CimSubscriptionResult currentItem = null; if ((instanceHandle != null) && (!instanceHandle.IsNull)) { if (!_shortenLifetimeOfResults) { instanceHandle = instanceHandle.Clone(); } currentItem = new CimSubscriptionResult(instanceHandle, bookMark, machineID); } try { this.ProcessNativeCallback(callbackProcessingContext, currentItem, moreResults, operationResult, errorMessage, errorDetailsHandle); } finally { if (_shortenLifetimeOfResults) { if (currentItem != null) { currentItem.Dispose(); } } } }
public void SimpleGetClass() { MI_Operation operation = null; this.Session.GetClass(MI_OperationFlags.Default, MI_OperationOptions.Null, TestGetClassNamespace, TestGetClassClassName, null, out operation); MI_Class classOut; MI_Class clonedClass = null; MI_Result result; string errorMessage = null; MI_Instance errorDetails = null; bool moreResults = false; var res = operation.GetClass(out classOut, out moreResults, out result, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect the first GetClass call to succeed"); Assert.True(!classOut.IsNull, "Expect retrieved class instance to be non-null"); res = classOut.Clone(out clonedClass); MIAssert.Succeeded(res, "Expect the clone to succeed"); while (moreResults) { MI_Result secondaryResult = MI_Result.MI_RESULT_OK; res = operation.GetClass(out classOut, out moreResults, out secondaryResult, out errorMessage, out errorDetails); MIAssert.Succeeded(res, "Expect GetClass to succeed even if we don't want the result"); } res = operation.Close(); MIAssert.Succeeded(res, "Expect operation to close successfully"); MI_Value elementValue; UInt32 elementIndex; MI_Flags elementFlags; MI_Type elementType; bool valueExists; string referenceClass; MI_QualifierSet propertyQualifierSet; res = clonedClass.GetElement(TestGetClassPropertyName, out elementValue, out valueExists, out elementType, out referenceClass, out propertyQualifierSet, out elementFlags, out elementIndex); MIAssert.Succeeded(res, "Expect to see the normal property on the class"); Assert.Equal(MI_Type.MI_STRING, elementType, "Expect the CIM property to have the right type"); Assert.Equal(TestGetClassPropertyFlags, elementFlags, "Expect the CIM property to have the normal flags"); MI_Type miClassQualifierType; MI_Value miClassQualifierValue; MI_Flags miClassQualifierFlags; MI_QualifierSet classQualifierSet; res = clonedClass.GetClassQualifierSet(out classQualifierSet); MIAssert.Succeeded(res, "Expect to be able to get class qualifiers set"); UInt32 qualifierIndex; res = classQualifierSet.GetQualifier("UUID", out miClassQualifierType, out miClassQualifierFlags, out miClassQualifierValue, out qualifierIndex); MIAssert.Succeeded(res, "Expect to be able to get qualifier information from class"); Assert.Equal(MI_Type.MI_STRING, miClassQualifierType, "Expect qualifier type to be a string"); Assert.True((miClassQualifierFlags & MI_Flags.MI_FLAG_ENABLEOVERRIDE) != 0, "Expect flags to be standard flags"); Assert.Equal(TestGetClassUUID, miClassQualifierValue.String, "Expect UUID of class to be the known UUID"); MI_ParameterSet parameters; MI_QualifierSet methodQualifierSet; UInt32 methodIndex; res = clonedClass.GetMethod(TestGetClassMethodName, out methodQualifierSet, out parameters, out methodIndex); MIAssert.Succeeded(res, "Expect to be able to get method from class"); UInt32 parameterCount; res = parameters.GetParameterCount(out parameterCount); MIAssert.Succeeded(res, "Expect to be able to get count from parameter set"); Assert.Equal(TestGetClassParameterCount, parameterCount, "Expect there to be the documented number of parameters"); MI_Type parameterType; string parameterReferenceClass; MI_QualifierSet parameterQualifierSet; UInt32 parameterIndex; res = parameters.GetParameter(TestGetClassParameterName, out parameterType, out parameterReferenceClass, out parameterQualifierSet, out parameterIndex); MIAssert.Succeeded(res, "Expect to be able to get parameter from parameter set"); Assert.Equal(TestGetClassParameterType, parameterType, "Expect parameter type to be the documented type"); Assert.Equal(TestGetClassParameterIndex, parameterIndex, "Expect the power state to be the first parameter"); }