Esempio n. 1
0
        public Shard(GatewaySettings settings, ShardInfo info, IGatewayRatelimiter ratelimiter, string url, ILogger logger)
        {
            _jsonSerializerOptions = new JsonSerializerOptions().ConfigureForMyriad();

            _settings     = settings;
            _info         = info;
            _ratelimiter  = ratelimiter;
            _url          = url;
            _logger       = logger.ForContext <Shard>().ForContext("ShardId", info.ShardId);
            _stateManager = new ShardStateManager(info, _jsonSerializerOptions, logger)
            {
                HandleEvent   = HandleEvent,
                SendHeartbeat = SendHeartbeat,
                SendIdentify  = SendIdentify,
                SendResume    = SendResume,
                Connect       = ConnectInner,
                Reconnect     = Reconnect,
            };
            _stateManager.OnHeartbeatReceived += latency =>
            {
                HeartbeatReceived?.Invoke(latency);
            };

            _conn = new ShardConnection(_jsonSerializerOptions, _logger);
        }
Esempio n. 2
0
        private void WebsocketPacketHandlerOnSocketHeartbeatReceived(DateTime heartbeatTime)
        {
            var eventArgs = new HeartbeatEventArgs(heartbeatTime);

            HeartbeatReceived?.Invoke(this, eventArgs);
        }
Esempio n. 3
0
 protected virtual void OnAlphaHeartbeatReceived(HeartbeatReceivedEventArgs e)
 {
     HeartbeatReceived?.Invoke(this, e);
 }