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); }
private void WebsocketPacketHandlerOnSocketHeartbeatReceived(DateTime heartbeatTime) { var eventArgs = new HeartbeatEventArgs(heartbeatTime); HeartbeatReceived?.Invoke(this, eventArgs); }
protected virtual void OnAlphaHeartbeatReceived(HeartbeatReceivedEventArgs e) { HeartbeatReceived?.Invoke(this, e); }