Inheritance: TransactionalNodeService.Proxy.Node, IInProcess
        DependencyCollection ISoapTransactionLinkExecutor.UpdateDependencies()
        {
            ISoapTransactionLinkExecutor executor = (ISoapTransactionLinkExecutor)this;

            foreach (KeyValuePair <Proxy.ConnectionType, Proxy.INode> nodePairs in ProxyNodeConnections)
            {
                Proxy.IFacade iFacadeNode = nodePairs.Value as Proxy.IFacade;

                if (iFacadeNode != null)
                {
                    if (!iFacadeNode.IsConcrete)
                    {
                        FacadeNode facadeNode = iFacadeNode as FacadeNode;
                        InProcess.InProcessNode inProcessNode = facadeNode.BaseNode as InProcess.InProcessNode;

                        if (inProcessNode != null && inProcessNode.OriginLink != null && inProcessNode.OriginLink.OriginChain != OriginChain)
                        {
                            executor.Dependencies.AddFacade(iFacadeNode);
                        }
                    }
                }
            }

            return(executor.Dependencies);
        }
Beispiel #2
0
        public Proxy.INode CreateNode(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Proxy.NodeType nodeType, string originalId)
        {
            FacadeNode facadeNode = new FacadeNode();

            InProcess.InProcessNode node = new InProcess.InProcessNode(MapManager);
            node.OriginLink = transactionLink;
            node.Facade     = facadeNode;
            node.Id         = Guid.NewGuid();
            node.DomainId   = domainId;
            node.RootMapId  = rootMapId;
            node.NodeType   = nodeType;
            node.OriginalId = originalId;
            node.Status     = Proxy.LoadState.Full;

            facadeNode.BaseNode = node;

            InProcessNodes.Add(transactionLink, facadeNode);

            return(facadeNode);
        }
Beispiel #3
0
        public Proxy.INode CreateNode(TransactionFramework.ISoapTransactionLink transactionLink, Guid domainId, Guid rootMapId, Proxy.NodeType nodeType, string originalId)
        {
            FacadeNode facadeNode = new FacadeNode();

            InProcess.InProcessNode node = new InProcess.InProcessNode(MapManager);
            node.OriginLink = transactionLink;
            node.Facade = facadeNode;
            node.Id = Guid.NewGuid();
            node.DomainId = domainId;
            node.RootMapId = rootMapId;
            node.NodeType = nodeType;
            node.OriginalId = originalId;
            node.Status = Proxy.LoadState.Full;

            facadeNode.BaseNode = node;

            InProcessNodes.Add(transactionLink, facadeNode);

            return facadeNode;
        }
Beispiel #4
0
        public void UpgradeFacade(TransactionFramework.ISoapTransactionLink transactionLink, ServerObjects.Node serviceNode)
        {
            if (InProcessNodes.ContainsKey(transactionLink))
            {
                FacadeNode facadeNode = InProcessNodes[transactionLink];
                InProcess.InProcessNode inProcessNode = facadeNode.BaseNode as InProcess.InProcessNode;

                if (inProcessNode != null)
                {
                    SoapNode soapNode = new SoapNode(inProcessNode, serviceNode);

                    facadeNode.BaseNode = soapNode;

                    InProcessNodes.Remove(transactionLink);
                    ProxyNodes[facadeNode.Id] = facadeNode;

                    /// TODO: Need to consider a better way to do this. I don't like that there is a need to call this afterwards and maybe it should be done when creating the SoapNode. I don't like it because it doesn't have to be done everytime a new SoapNode is created e.g. if the SoapNode is created from a Service.NO as opposed to a returned call like here.
                    soapNode.ProcessDelayedActions();
                }
            }
        }