Esempio n. 1
0
 /// <summary>
 /// Initializes a new instance of the <see cref="ObjectManager"/> class.
 /// </summary>
 /// <param name="client">The client to use for executing API requests.</param>
 internal ObjectManager(PrtgClient client)
 {
     Sensor   = new SensorFactory(client);
     Device   = new DeviceFactory(client);
     Group    = new GroupFactory(client);
     Probe    = new ProbeFactory(client);
     Trigger  = new TriggerFactory(client);
     Property = new PropertyFactory(client);
 }
Esempio n. 2
0
        public IAgentHost Build()
        {
            AgentId.VerifyNotNull(nameof(AgentId));
            ProbeFactory.VerifyNotNull(nameof(ProbeFactory));
            TraceContainer.VerifyNotNull(nameof(TraceContainer));
            LoggerFactory.VerifyNotNull(nameof(LoggerFactory));

            var monitoringJobs = Targets
                                 .VerifyNotNull(nameof(Targets))
                                 .Select(x => (Target: x, Probe: ProbeFactory.Create(x, AgentId, TraceContainer)))
                                 .Select(x => new MonitoringJob(x.Target, x.Probe, LoggerFactory.CreateLogger <MonitoringJob>()))
                                 .ToArray();

            return(new AgentHost(monitoringJobs, LoggerFactory.CreateLogger <AgentHost>()));
        }
Esempio n. 3
0
        private static KeyValuePair <Regex, Action <ILexerArg <T> > > ResolveHandler(
            AmbiguityResolverEnum ambiguityResolverEnum, string buffer, char next, T lastToken,
            // ReSharper disable once ParameterTypeCanBeEnumerable.Local
            List <KeyValuePair <Regex, Action <ILexerArg <T> > > > handlers)
        {
            switch (ambiguityResolverEnum)
            {
            case AmbiguityResolverEnum.FirstMatch:
                return(handlers.First());

            case AmbiguityResolverEnum.LastMatch:
                return(handlers.Last());

            case AmbiguityResolverEnum.LongestMatch:
                var handlerAny = handlers
                                 .Select(x => new
                {
                    Handler = x,
                    Factory = ProbeFactory.New <string>()
                })
                                 .Select(x => new
                {
                    // ReSharper disable once AccessToModifiedClosure
                    x.Factory, x.Handler, Arg = new LexerArg <T>(buffer, next, lastToken,
                                                                 // Test should not be able to stop the parser
                                                                 () => { },
                                                                 (a, b) => x.Factory.Instance.SetValue(a),
                                                                 _ => { },
                                                                 _ => { }
                                                                 )
                })
                                 .Select(x =>
                {
                    var result = new
                    {
                        x.Factory,
                        x.Handler,
                        x.Arg,
                        Probe = x.Factory.Build()
                    };

                    result.Handler.Value(x.Arg);

                    return(result);
                })
                                 .Select(x =>
                {
                    var result = new
                    {
                        x.Probe,
                        x.Handler
                    };

                    x.Probe.Trigger();

                    return(result);
                })
                                 .Where(x => x.Probe.Resolved)
                                 .OrderBy(x => x.Probe.Value.Length)
                                 .LastOrDefault();

                return(handlerAny?.Handler ?? ResolveHandler(AmbiguityResolverEnum.FirstMatch, buffer, next,
                                                             lastToken, handlers));

            default:
                throw new ArgumentOutOfRangeException();
            }
        }