public void Exceptionprocess(MarshalByRefObject inst, IMessage msg, Exception exception) { // Extract Server ONServer lServer = inst as ONServer; // Pop the OID from Class Stack if (mInStack) { lServer.OnContext.OperationStack.Pop(); } }
public void Preprocess(MarshalByRefObject inst, IMessage msg) { if (mServiceCacheItem == null) { mServiceCacheItem = ONServiceCacheItem.Get("Server", ClassName, ServiceName); } IMethodCallMessage lMsgIn = msg as IMethodCallMessage; // Extract Server ONServer lServer = inst as ONServer; // Take the active Instance bool lFind = false; foreach (ONInstance lInstance in lServer.OnContext.OperationStack) { if (((object)lInstance != null) && (lInstance == lServer.Instance)) { lServer.Instance = lInstance.GetFacet(lServer.Instance.ClassName); lFind = true; break; } } // Push OID to Class Stack lServer.OnContext.OperationStack.Push(lServer.Instance); mInStack = true; // Check State Changes if (lServer.OnContext.NeedsVerification) { mServiceCacheItem.InvoqueCheckState(lServer, lMsgIn.Args); lServer.OnContext.NeedsVerification = false; } // Search all facets foreach (IONType lArgument in lMsgIn.InArgs) { ONOid lOidArgument = lArgument as ONOid; if (lOidArgument != null) { if (!lOidArgument.Exist(lServer.OnContext, null)) { throw new ONInstanceNotExistException(null, ONContext.GetComponent_Instance(lOidArgument.ClassName, lServer.OnContext).IdClass, lOidArgument.ClassName); } } } // Check Precondition mServiceCacheItem.InvoquePrecondition(lServer, lMsgIn.Args); }
public void Preprocess(MarshalByRefObject inst, IMessage msg) { IMethodCallMessage lMsgIn = msg as IMethodCallMessage; // Extract Server ONServer lServer = inst as ONServer; // Take the active Instance bool lFind = false; foreach (ONInstance lInstance in lServer.OnContext.TransactionStack) { if (((object)lInstance != null) && (lInstance == lServer.Instance)) { lServer.Instance = lInstance.GetFacet(lServer.Instance.ClassName); lFind = true; break; } } if (!lFind) { foreach (ONInstance lInstance in lServer.OnContext.OperationStack) { if (((object)lInstance != null) && (lInstance == lServer.Instance)) { lServer.Instance = lInstance.GetFacet(lServer.Instance.ClassName); lFind = true; break; } } } // Push OID to Class Stack lServer.OnContext.OperationStack.Push(lServer.Instance); mInStack = true; // Search all facets foreach (IONType lArgument in lMsgIn.InArgs) { ONOid lOidArgument = lArgument as ONOid; if (lOidArgument != null) { if (!lOidArgument.Exist(lServer.OnContext, null)) { throw new ONInstanceNotExistException(null, ONContext.GetComponent_Instance(lOidArgument.ClassName, lServer.OnContext).IdClass, lOidArgument.ClassName); } } } }
public void Postprocess(MarshalByRefObject inst, IMessage msg, ref IMessage msgReturn) { IMethodCallMessage lMsgIn = msg as IMethodCallMessage; IMethodReturnMessage lMsgOut = msgReturn as IMethodReturnMessage; // Extract Server ONServer lServer = inst as ONServer; // Throw triggers lServer.OnContext.ThrowAcceptedTriggers(); // Pop the OID from Class Stack lServer.OnContext.OperationStack.Pop(); mInStack = false; }
public void Postprocess(MarshalByRefObject inst, IMessage msg, ref IMessage msgReturn) { IMethodCallMessage lMsgIn = msg as IMethodCallMessage; IMethodReturnMessage lMsgOut = msgReturn as IMethodReturnMessage; // Extract Server ONServer lServer = inst as ONServer; // Calculate OutputArgumets object[] lArgs = lMsgOut.Args; mServiceCacheItem.InvoqueOutboundArguments(lServer, lArgs); // Pop the OID from Class Stack lServer.OnContext.OperationStack.Pop(); mInStack = false; msgReturn = new ReturnMessage(lMsgOut.ReturnValue, lArgs, lArgs.Length, lMsgOut.LogicalCallContext, lMsgIn); }
/// <summary> /// Throws the triggers that has been accepted /// </summary> public void ThrowAcceptedTriggers() { List <ONTrigger> lAcceptedTriggers = AcceptedTriggers; AcceptedTriggers = new List <ONTrigger>(); foreach (ONTrigger lOnTrigger in lAcceptedTriggers) { try { object[] lParameters = new object[lOnTrigger.InputParameters.Count + lOnTrigger.OutputParameters.Count]; int i = 0; ONInstance lThis = null; foreach (DictionaryEntry lDictionaryEntry in lOnTrigger.InputParameters) { lParameters[i++] = lDictionaryEntry.Value; if (string.Compare((lDictionaryEntry.Key as string), lOnTrigger.ArgumentThisName, true) == 0) { lThis = (lDictionaryEntry.Value as ONOid).GetInstance(this); } } foreach (DictionaryEntry lDictionaryEntry in lOnTrigger.OutputParameters) { lParameters[i++] = lDictionaryEntry.Value; } ONServiceContext lContext = new ONServiceContext(); lContext.OidAgent = OidAgent; ONServer lComponent = ONContext.GetComponent_Server(lOnTrigger.ClassName, this, lThis); ONContext.InvoqueMethod(lComponent, typeof(ONServiceAttribute), "<Class>" + lOnTrigger.ClassName + "</Class><Service>" + lOnTrigger.ServiceName + "</Service>", lParameters); } catch {} } }