Esempio n. 1
0
        private ChangesToCascade Apply(NodeTrackingObject trackingObject)
        {
            var changesToChildren = new List <Tuple <NodeTrackingObject, ChangesToCascade> >();

            foreach (var child in trackingObject.Children)
            {
                var changesToCascade = Apply(child);

                changesToChildren.Add(Tuple.Create(child, changesToCascade));
            }

            return(nodeChangesApplier.Apply(trackingObject, changesToChildren.ToArray()));
        }
Esempio n. 2
0
        public void TrackObject(ObjectPath objectPath, ObjectTypes objectType, ObjectStates objectState)
        {
            var trackingObject = new NodeTrackingObject(objectPath, objectType, objectState);

            if (!objectPath.HasParent)
            {
                rootTrackingObjects.Add(objectPath, trackingObject);
            }
            else
            {
                GetTrackingObject(objectPath.ParentObjectPath).AddChild(trackingObject);
            }
        }
Esempio n. 3
0
        private NodeTrackingObject GetTrackingObject(ObjectPath objectPath, NodeTrackingObject currentTrackingObject, int depth)
        {
            if (depth == objectPath.Ids.Length)
            {
                return(currentTrackingObject);
            }

            for (var i = 0; i < currentTrackingObject.Children.Length; i++)
            {
                if (currentTrackingObject.Children[i].Path.LocalNodeId.Equals(objectPath.Ids[depth]))
                {
                    return(GetTrackingObject(objectPath, currentTrackingObject.Children[i], depth + 1));
                }
            }

            throw new Exception("Could not find tracking object");
        }
Esempio n. 4
0
 public ChangesToCascade Apply(NodeTrackingObject trackingObject, Tuple <NodeTrackingObject, ChangesToCascade>[] changesToChildren)
 {
     throw new NotImplementedException();
 }