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; }
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()); }
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()); }