Example #1
0
    // Use this for initialization
    void Start()
    {
        //start game timer

        timer                = new DynamicTimer(null, 0, gameTime);
        timerText.text       = gameTime.ToString();
        hidersFoundText.text = "Hiders Found: " + SceneManagement.hidersFound;
    }
 public WebSocketSessionContext(ArtemisClientConfig config,
                                Action <WebSocket> onOpen, Action <WebSocket, MessageEventArgs> onMessage)
 {
     Preconditions.CheckArgument(config != null, "config");
     Preconditions.CheckArgument(onOpen != null, "onOpen");
     Preconditions.CheckArgument(onMessage != null, "onMessage");
     _addressManager       = config.AddressManager;
     _addressContext.Value = _addressManager.AddressContext;
     _ttl           = config.ConfigurationManager.GetProperty(config.Key("websocket-session.ttl"), 5 * 60 * 1000, 5 * 60 * 1000, 30 * 60 * 1000);
     _onOpen        = onOpen;
     _onMessage     = onMessage;
     _healthChecker = new DynamicTimer(config.ConfigurationManager.GetProperty(config.Key("websocket-session.health-check.dynamic-scheduled-thread.run-interval"), 1000, 100, 10 * 60 * 1000),
                                       () =>
     {
         CheckHealth();
     });
     CheckHealth();
 }
        public ServiceDiscovery(ServiceRepository serviceRepository, ArtemisClientConfig config)
        {
            Preconditions.CheckArgument(serviceRepository != null, "ServiceRepository should not be null");
            _serviceRepository   = serviceRepository;
            _discoveryHttpClient = new ArtemisDiscoveryHttpClient(config);
            _ttl = config.ConfigurationManager.GetProperty(config.Key("service-discovery.ttl"), 15 * 60 * 1000L, 60 * 1000, 24 * 60 * 60 * 1000);

            _sessionContext = new WebSocketSessionContext(config, webSocket =>
            {
                try
                {
                    SubScribe(webSocket);
                }
                catch (Exception e)
                {
                    _log.Warn("subscibe service change message failed", e);
                }
            }, (webSocket, message) =>
            {
                try
                {
                    OnInstanceChange(message.Data.FromJson <InstanceChange>());
                }
                catch (Exception e)
                {
                    _log.Warn("convert message failed", e);
                }
            });

            var key = config.Key("service-discovery.dynamic-scheduled-thread.run-interval");

            _poller = new DynamicTimer(config.ConfigurationManager.GetProperty(key, 60 * 1000, 60 * 1000, 24 * 60 * 60 * 1000),
                                       () =>
            {
                try
                {
                    Reload(ReloadDiscoveryConfigs);
                }
                catch (Exception e)
                {
                    _log.Warn("reload services failed", e);
                }
            });
        }
        public InstanceRegistry(InstanceRepository instanceRepository, ArtemisClientConfig config)
        {
            Preconditions.CheckArgument(instanceRepository != null, "instance repository");
            Preconditions.CheckArgument(config != null, "config");
            _instanceRepository = instanceRepository;
            _ttl      = config.ConfigurationManager.GetProperty(config.Key("instance-registry.instance-ttl"), 20 * 1000, 5 * 1000, 24 * 60 * 60 * 1000);
            _interval = config.ConfigurationManager.GetProperty(config.Key("instance-registry.heartbeat-interval"), 5 * 1000, 500, 5 * 60 * 1000);

            Action <WebSocket> onOpen = (webSocket) => {
            };
            Action <WebSocket, MessageEventArgs> onMessage = (webSocket, message) =>
            {
                AcceptHeartbeat(message);
            };

            _sessionContext = new WebSocketSessionContext(config, onOpen, onMessage);

            var heartbeatStatusMetricConfig = new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.event.distribution") }
            });

            _heartbeatStatus         = config.EventMetricManager.GetMetric(config.Key("heartbeat.event"), heartbeatStatusMetricConfig);
            _prepareHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.prepare-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.prepare-latency.distribution") }
            }));
            _sendHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.send-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.send-latency.distribution") }
            }));
            _acceptHeartbeatLatency = config.AuditMetricManager.GetMetric(config.Key("heartbeat.accept-latency"), new MetricConfig(new Dictionary <string, string>()
            {
                { "metric_name_distribution", config.Key("heartbeat.accept-latency.distribution") }
            }));

            _heartbeater = new DynamicTimer(config.ConfigurationManager.GetProperty(config.Key("instances-registry.heartbeat-interval.dynamic-scheduled-thread.run-interval"), 1000, 500, 90 * 1000),
                                            () =>
            {
                CheckHeartbeat();
            });
        }
 // Subtract time to the passed timer's counter
 public static void SubtractTime(DynamicTimer timerToSubtractTimeTo, float lessTime)
 {
     timerToSubtractTimeTo.SubtractTime(lessTime);
 }
 // Add time to the passed timer's counter
 public static void AddTime(DynamicTimer timerToAddTimeTo, float moreTime)
 {
     timerToAddTimeTo.AddTime(moreTime);
 }