Ejemplo n.º 1
0
        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();
            }
        }
Ejemplo n.º 2
0
        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);
        }
Ejemplo n.º 3
0
        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);
                    }
                }
            }
        }
Ejemplo n.º 4
0
        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;
        }
Ejemplo n.º 5
0
        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);
        }
Ejemplo n.º 6
0
        /// <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 {}
            }
        }