Exemple #1
0
        public virtual void Detach()
        {
            if (DetachState != DetachStateEnum.Attached)
            {
                throw new Exception("Store not Attached");
            }

            _DetachState = DetachStateEnum.Detaching;

            foreach (IVertex v in VertexIdentifiersDictionary.Values)
            {
                foreach (IEdge e in v.OutEdges)
                {
                    if (e is IDetachableEdge)
                    {
                        IDetachableEdge de = (IDetachableEdge)e;
                        if (de.To.Store != this || (de.Meta != null && de.Meta.Store != this))
                        {
                            de.Detach();
                        }
                    }
                }
            }

            _DetachState = DetachStateEnum.Detached;
        }
Exemple #2
0
        public virtual void Attach()
        {
            if (_DetachState == DetachStateEnum.InDetached)
            {
                _DetachState = DetachStateEnum.Attached;
                return;
            }
            else
            {
                _DetachState = DetachStateEnum.Attaching;
            }

            foreach (IVertex v in VertexIdentifiersDictionary.Values)
            {
                foreach (IEdge e in v.OutEdges)
                {
                    if (e is IDetachableEdge)
                    {
                        IDetachableEdge de = (IDetachableEdge)e;
                        if (de.DetachState == DetachStateEnum.Detached)
                        {
                            de.Attach();
                        }

                        if (de.To.Store.DetachState == DetachStateEnum.InDetached)
                        {
                            de.To.Store.Attach();
                        }
                    }
                }
            }

            _DetachState = DetachStateEnum.Attached;
        }