public static PingEventSourceConfig LoadConfig(IPluginConfig pluginConfig)
        {
            var result = new PingEventSourceConfig();

            if (pluginConfig.EventSourceConfigs.ContainsKey("qitana.Ping"))
            {
                var obj = pluginConfig.EventSourceConfigs["qitana.Ping"];

                if (obj.TryGetValue("Enabled", out JToken enabled))
                {
                    result.Enabled = enabled.ToObject <bool>();
                }

                if (obj.TryGetValue("Interval", out JToken interval))
                {
                    result.Interval = interval.ToObject <int>();
                }

                if (obj.TryGetValue("Timeout", out JToken timeout))
                {
                    result.Timeout = timeout.ToObject <int>();
                }
            }

            return(result);
        }
Esempio n. 2
0
        public PingEventSourceConfigPanel(PingEventSource source)
        {
            InitializeComponent();

            this.source = source;
            this.config = source.Config;

            SetupControlProperties();
        }
Esempio n. 3
0
        public PingController(PingEventSourceConfig config)
        {
            this.Config = config;

            ping = new Ping();
            ping.PingCompleted += (sender, e) =>
            {
                OnPingCompleted(new PingResult()
                {
                    Address      = e.Reply.Address.ToString(),
                    RTT          = e.Reply.RoundtripTime,
                    Status       = e.Reply.Status.ToString(),
                    TTL          = (e.Reply.Options != null) ? e.Reply.Options.Ttl : 0,
                    TimestampRaw = ((PingUserToken)e.UserState).Timestamp,
                });
            };

            pingTimer = new System.Timers.Timer()
            {
                Interval  = this.Interval,
                AutoReset = true
            };
            pingTimer.Elapsed += (sender, e) =>
            {
                pingTimer.Interval = this.Config.Interval;

                if (!this.Config.Enabled)
                {
                    return;
                }
                if (string.IsNullOrWhiteSpace(Address))
                {
                    return;
                }

                try
                {
                    ping.SendAsync(Address, this.Timeout, pingBytes, pingOptions, new PingUserToken());
                }
                catch (Exception ex)
                {
                    OnPingCompleted(new PingResult()
                    {
                        Status  = "Exception",
                        Message = ex.Message
                    });
                }
            };
        }
Esempio n. 4
0
 public override void LoadConfig(IPluginConfig config)
 {
     Config = PingEventSourceConfig.LoadConfig(config);
 }