예제 #1
0
        internal TreeBuilder(PrtgClient client, FlagEnum <TreeParseOption>?options, ITreeProgressCallback progressCallback, FlagEnum <TreeRequestType> requestType, CancellationToken token)
        {
            ProgressManager = new TreeProgressManager(progressCallback);
            ObjectManager   = new ObjectManager(client);
            Token           = token;
            Options         = options ?? TreeParseOption.Common;
            RequestType     = requestType;

            this.client = client;
        }
예제 #2
0
        private PrtgOrphan GetTreeFast()
        {
            List <Probe>  probes  = null;
            List <Group>  groups  = null;
            List <Device> devices = null;
            List <Sensor> sensors = null;

            List <Action <int, int> > actions = new List <Action <int, int> >();

            using (ProgressManager.ProcessLevel())
            {
                if (Options.Contains(TreeParseOption.Probes))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Probe, i, t);
                        probes = client.GetProbes();
                    });
                }

                if (Options.Contains(TreeParseOption.Groups))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Group, i, t);
                        groups = client.GetGroups();
                    });
                }
                else
                {
                    actions.Add((i, t) => { groups = client.GetGroups(Property.Id, WellKnownId.Root); });
                }

                if (Options.Contains(TreeParseOption.Devices))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Device, i, t);
                        devices = client.GetDevices();
                    });
                }

                if (Options.Contains(TreeParseOption.Sensors))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Sensor, 4, 4);
                        sensors = client.GetSensors();
                    });
                }

                for (var i = 1; i <= actions.Count; i++)
                {
                    actions[i - 1](i, actions.Count);
                }

                ObjectManager = new CachedObjectManager(
                    client,
                    sensors,
                    devices,
                    groups,
                    probes
                    );
            }

            ProgressManager = new TreeProgressManager(null);

            var root = groups.First(g => g.Id == WellKnownId.Root);

            var level = new TreeBuilderLevel(root, this);

            return(level.ProcessObject());
        }
예제 #3
0
        private PrtgOrphan GetTreeFast()
        {
            List <Probe>  probes  = null;
            List <Group>  groups  = null;
            List <Device> devices = null;
            List <Sensor> sensors = null;

            List <Action <int, int> > actions = new List <Action <int, int> >();

            using (ProgressManager.ProcessLevel())
            {
                if (Options.Contains(TreeParseOption.Probes))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Probe, i, t);
                        probes = client.GetProbes();
                    });
                }

                if (Options.Contains(TreeParseOption.Groups))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Group, i, t);
                        groups = client.GetGroups();
                    });
                }
                else
                {
                    actions.Add((i, t) => { groups = client.GetGroups(Property.Id, WellKnownId.Root); });
                }

                if (Options.Contains(TreeParseOption.Devices))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Device, i, t);
                        devices = client.GetDevices();
                    });
                }

                if (Options.Contains(TreeParseOption.Sensors))
                {
                    actions.Add((i, t) =>
                    {
                        ProgressManager.OnProcessType(PrtgNodeType.Sensor, 4, 4);
                        sensors = client.GetSensors();
                    });
                }

                for (var i = 1; i <= actions.Count; i++)
                {
                    actions[i - 1](i, actions.Count);
                }

                ObjectManager = new CachedObjectManager(
                    client,
                    sensors,
                    devices,
                    groups,
                    probes
                    );
            }

            //If we're just after the most common objects, skip showing progress as we already have everything.
            //Otherwise, show progress as normal so we know that we're trying to retrieve properties and triggers
            if (!(Options.Contains(TreeParseOption.Triggers) || Options.Contains(TreeParseOption.Properties)))
            {
                ProgressManager = new TreeProgressManager(null);
            }

            var root = groups.First(g => g.Id == WellKnownId.Root);

            var level = new TreeBuilderLevel(root, this);

            return(level.ProcessObject());
        }