/// <summary> /// Creates a new upstream connected server group /// </summary> /// <param name="name">The name of the group.</param> /// <param name="visibility">The groups visibility.</param> /// <param name="threadHelper">The server's thread helper.</param> /// <param name="serverRegistryConnectorManager">The server's registry connector manager</param> /// <param name="remoteServerManager">The remote server manager for the server.</param> /// <param name="reconnectAttempts">The number of times to attempt to reconnect to a server before considering it unconnectable.</param> /// <param name="logger">The logger to use.</param> /// <param name="remoteServerLogger">The logger to pass to created remote servers.</param> /// <param name="metricsCollector">The metrics collector to use.</param> /// <param name="remoteServerMetricsCollector">The metrics collector to pass to created remote servers.</param> internal UpstreamServerGroup(string name, ServerVisibility visibility, DarkRiftThreadHelper threadHelper, ServerRegistryConnectorManager serverRegistryConnectorManager, RemoteServerManager remoteServerManager, int reconnectAttempts, Logger logger, Logger remoteServerLogger, MetricsCollector metricsCollector, MetricsCollector remoteServerMetricsCollector) : base(name, visibility, threadHelper, logger, metricsCollector) { this.threadHelper = threadHelper; this.serverRegistryConnectorManager = serverRegistryConnectorManager; this.remoteServerManager = remoteServerManager; this.reconnectAttempts = reconnectAttempts; this.logger = logger; this.remoteServerLogger = remoteServerLogger; this.remoteServerMetricsCollector = remoteServerMetricsCollector; }
/// <summary> /// Creates a new remote server. /// </summary> /// <param name="remoteServerManager">The remote server manager for the server.</param> /// <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 UpstreamRemoteServer(RemoteServerManager remoteServerManager, ushort id, string host, ushort port, UpstreamServerGroup group, DarkRiftThreadHelper threadHelper, Logger logger, MetricsCollector metricsCollector) { this.remoteServerManager = remoteServerManager; 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.", "group").WithTags(group.Name); messagesReceivedCounter = metricsCollector.Counter("messages_received", "The number of messages received from remote servers.", "group").WithTags(group.Name); messageReceivedEventTimeHistogram = metricsCollector.Histogram("message_received_event_time", "The time taken to execute the MessageReceived event.", "group").WithTags(group.Name); messageReceivedEventFailuresCounter = metricsCollector.Counter("message_received_event_failures", "The number of failures executing the MessageReceived event.", "group").WithTags(group.Name); 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); }