Ejemplo n.º 1
0
        public ServerGroup(string name, ServerVisibility visibility, DarkRiftThreadHelper threadHelper, Logger logger, MetricsCollector metricsCollector)
        {
            this.Name       = name;
            this.Visibility = visibility;

            this.threadHelper = threadHelper;
            this.logger       = logger;

            serversConnectedGauge            = metricsCollector.Gauge("remote_servers_connected", "The number of servers connected to the server in this group.", "group").WithTags(name);
            serverJoinedEventTimeHistogram   = metricsCollector.Histogram("remote_server_joined_event_time", "The time taken to execute the ServerJoined event.", "group").WithTags(name);
            serverLeftEventTimeHistogram     = metricsCollector.Histogram("remote_server_left_event_time", "The time taken to execute the ServerLeft event.", "group").WithTags(name);
            serverJoinedEventFailuresCounter = metricsCollector.Counter("remote_server_joined_event_failures", "The number of failures executing the ServerJoined event.", "group").WithTags(name);
            serverLeftEventFailuresCounter   = metricsCollector.Counter("remote_server_left_event_failures", "The number of failures executing the ServerLeft event.", "group").WithTags(name);
        }
        /// <summary>
        ///     Creates a new remote server.
        /// </summary>
        /// <param name="id">The ID of the server.</param>
        /// <param name="host">The host connected to.</param>
        /// <param name="port">The port connected to.</param>
        /// <param name="group">The group the server belongs to.</param>
        /// <param name="threadHelper">The thread helper to use.</param>
        /// <param name="logger">The logger to use.</param>
        /// <param name="metricsCollector">The metrics collector to use.</param>
        internal DownstreamRemoteServer(ushort id, string host, ushort port, DownstreamServerGroup group, DarkRiftThreadHelper threadHelper, Logger logger, MetricsCollector metricsCollector)
        {
            this.ID           = id;
            this.Host         = host;
            this.Port         = port;
            this.serverGroup  = group;
            this.threadHelper = threadHelper;
            this.logger       = logger;

            messagesSentCounter                    = metricsCollector.Counter("messages_sent", "The number of messages sent to remote servers.");
            messagesReceivedCounter                = metricsCollector.Counter("messages_received", "The number of messages received from remote servers.");
            messageReceivedEventTimeHistogram      = metricsCollector.Histogram("message_received_event_time", "The time taken to execute the MessageReceived event.");
            messageReceivedEventFailuresCounter    = metricsCollector.Counter("message_received_event_failures", "The number of failures executing the MessageReceived event.");
            serverConnectedEventTimeHistogram      = metricsCollector.Histogram("remote_server_connected_event_time", "The time taken to execute the ServerConnected event.", "group").WithTags(group.Name);
            serverDisconnectedEventTimeHistogram   = metricsCollector.Histogram("remote_server_disconnected_event_time", "The time taken to execute the ServerDisconnected event.", "group").WithTags(group.Name);
            serverConnectedEventFailuresCounter    = metricsCollector.Counter("remote_server_connected_event_failures", "The number of failures executing the ServerConnected event.", "group").WithTags(group.Name);
            serverDisconnectedEventFailuresCounter = metricsCollector.Counter("remote_server_disconnected_event_failures", "The number of failures executing the ServerDisconnected event.", "group").WithTags(group.Name);
        }
Ejemplo n.º 3
0
        /// <summary>
        ///     Creates a new client manager.
        /// </summary>
        /// <param name="settings">The settings for this client manager.</param>
        /// <param name="networkListenerManager">The server's network listener manager.</param>
        /// <param name="threadHelper">The thread helper the client manager will use.</param>
        /// <param name="logger">The logger this client manager will use.</param>
        /// <param name="clientLogger">The logger clients will use.</param>
        internal ClientManager(ServerSpawnData.ServerSettings settings, NetworkListenerManager networkListenerManager, DarkRiftThreadHelper threadHelper, Logger logger, Logger clientLogger)
#endif
        {
            this.MaxStrikes             = settings.MaxStrikes;
            this.networkListenerManager = networkListenerManager;
            this.threadHelper           = threadHelper;
            this.logger       = logger;
            this.clientLogger = clientLogger;
#if PRO
            this.clientMetricsCollector = clientMetricsCollector;

            clientsConnectedGauge                  = metricsCollector.Gauge("clients_connected", "The number of clients connected to the server.");
            clientConnectedEventTimeHistogram      = metricsCollector.Histogram("client_connected_event_time", "The time taken to execute the ClientConnected event.");
            clientDisconnectedEventTimeHistogram   = metricsCollector.Histogram("client_disconnected_event_time", "The time taken to execute the ClientDisconnected event.");
            clientConnectedEventFailuresCounter    = metricsCollector.Counter("client_connected_event_failures", "The number of failures executing the ClientConnected event.");
            clientDisconnectedEventFailuresCounter = metricsCollector.Counter("client_disconnected_event_failures", "The number of failures executing the ClientDisconnected event.");
#endif
        }
Ejemplo n.º 4
0
 public void RemoveFifteenSecondsIntervalMeterMetric(ICounterMetric meterMetricToRemove)
 {
     fifteenSecondsIntervalMeterMetrics.TryRemove(meterMetricToRemove);
 }
Ejemplo n.º 5
0
 public void AddFifteenSecondsIntervalMeterMetric(ICounterMetric newMeterMetric)
 {
     fifteenSecondsIntervalMeterMetrics.Add(newMeterMetric);
 }
Ejemplo n.º 6
0
 public void RemoveFiveSecondsIntervalMeterMetric(ICounterMetric meterMetricToRemove)
 {
     fiveSecondsTickIntervalMetrics.TryRemove(meterMetricToRemove);
 }
Ejemplo n.º 7
0
 public void AddFiveSecondsIntervalMeterMetric(ICounterMetric newMeterMetric)
 {
     fiveSecondsTickIntervalMetrics.Add(newMeterMetric);
 }
Ejemplo n.º 8
0
 public void RemovePerSecondCounterMetric(ICounterMetric perSecondCounterMetricToRemove)
 {
     oneSecondIntervalMetrics.TryRemove(perSecondCounterMetricToRemove);
 }
Ejemplo n.º 9
0
 public void AddPerSecondCounterMetric(ICounterMetric newPerSecondCounterMetric)
 {
     oneSecondIntervalMetrics.Add(newPerSecondCounterMetric);
 }