/// <summary>
 ///     Creates a new downstream 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="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 DownstreamServerGroup(string name, ServerVisibility visibility, DarkRiftThreadHelper threadHelper, Logger logger, Logger remoteServerLogger, MetricsCollector metricsCollector, MetricsCollector remoteServerMetricsCollector)
     : base(name, visibility, threadHelper, logger, metricsCollector)
 {
     this.threadHelper                 = threadHelper;
     this.logger                       = logger;
     this.remoteServerLogger           = remoteServerLogger;
     this.remoteServerMetricsCollector = remoteServerMetricsCollector;
 }
 /// <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;
 }
        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);
        }
Example #4
0
        /// <summary>
        /// Configures a group in the cluster.
        /// </summary>
        /// <param name="name">The name of the group.</param>
        /// <param name="visibility">The visibility of the group.</param>
        /// <param name="connectsTo">The name of groups this group connects to.</param>
        /// <returns>The configuration builder to continue construction.</returns>
        public DarkRiftClusterConfigurationBuilder AddGroup(string name, ServerVisibility visibility, params string[] connectsTo)
        {
            ClusterSpawnData.GroupsSettings.GroupSettings networkListenerSettings = new ClusterSpawnData.GroupsSettings.GroupSettings
            {
                Name       = name,
                Visibility = visibility
            };

            foreach (string connectsToName in connectsTo)
            {
                ClusterSpawnData.GroupsSettings.GroupSettings.ConnectsToSettings connectsToSettings = new ClusterSpawnData.GroupsSettings.GroupSettings.ConnectsToSettings()
                {
                    Name = connectsToName
                };
                networkListenerSettings.ConnectsTo.Add(connectsToSettings);
            }

            ClusterSpawnData.Groups.Groups.Add(networkListenerSettings);

            return(this);
        }
 /// <summary>
 ///     Constructor for a new group settings instance.
 /// </summary>
 /// <param name="name">The group name.</param>
 /// <param name="visibility">The group's visibility.</param>
 public GroupSettings(string name, ServerVisibility visibility)
 {
     this.Name       = name;
     this.Visibility = visibility;
 }