From 05991f4c4b0c8cbf9f7973236d7a0856225f5641 Mon Sep 17 00:00:00 2001 From: RogueException Date: Mon, 23 Nov 2015 22:24:49 -0400 Subject: [PATCH] Minor DateTime changes --- src/Discord.Net/API/Presence.cs | 2 +- src/Discord.Net/API/Voice.cs | 2 +- src/Discord.Net/API/WebSockets.cs | 2 +- src/Discord.Net/DiscordClient.Users.cs | 2 +- src/Discord.Net/Helpers/EpochTime.cs | 5 +++-- src/Discord.Net/Net/WebSockets/DataWebSocket.cs | 2 +- src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs | 10 +++++----- 7 files changed, 13 insertions(+), 12 deletions(-) diff --git a/src/Discord.Net/API/Presence.cs b/src/Discord.Net/API/Presence.cs index 9a16c9fbc..6c40a2c26 100644 --- a/src/Discord.Net/API/Presence.cs +++ b/src/Discord.Net/API/Presence.cs @@ -14,7 +14,7 @@ namespace Discord.API public class Data { [JsonProperty("idle_since")] - public ulong? IdleSince; + public long? IdleSince; [JsonProperty("game_id")] public int? GameId; } diff --git a/src/Discord.Net/API/Voice.cs b/src/Discord.Net/API/Voice.cs index 695f539b4..17670dcf0 100644 --- a/src/Discord.Net/API/Voice.cs +++ b/src/Discord.Net/API/Voice.cs @@ -92,7 +92,7 @@ namespace Discord.API public SocketInfo SocketData = new SocketInfo(); } } - internal sealed class VoiceKeepAliveCommand : WebSocketMessage + internal sealed class VoiceKeepAliveCommand : WebSocketMessage { public VoiceKeepAliveCommand() : base(3, EpochTime.GetMilliseconds()) { } } diff --git a/src/Discord.Net/API/WebSockets.cs b/src/Discord.Net/API/WebSockets.cs index b253d380c..8ae222c97 100644 --- a/src/Discord.Net/API/WebSockets.cs +++ b/src/Discord.Net/API/WebSockets.cs @@ -41,7 +41,7 @@ namespace Discord.API } //Commands - internal sealed class KeepAliveCommand : WebSocketMessage + internal sealed class KeepAliveCommand : WebSocketMessage { public KeepAliveCommand() : base(1, EpochTime.GetMilliseconds()) { } } diff --git a/src/Discord.Net/DiscordClient.Users.cs b/src/Discord.Net/DiscordClient.Users.cs index 47df1935d..04bccbc83 100644 --- a/src/Discord.Net/DiscordClient.Users.cs +++ b/src/Discord.Net/DiscordClient.Users.cs @@ -297,7 +297,7 @@ namespace Discord } private Task SendStatus() { - _dataSocket.SendStatus(_status == UserStatus.Idle ? EpochTime.GetMilliseconds() - (10 * 60 * 1000) : (ulong?)null, _gameId); + _dataSocket.SendStatus(_status == UserStatus.Idle ? EpochTime.GetMilliseconds() - (10 * 60 * 1000) : (long?)null, _gameId); return TaskHelper.CompletedTask; } } diff --git a/src/Discord.Net/Helpers/EpochTime.cs b/src/Discord.Net/Helpers/EpochTime.cs index 60c6f4e28..b4dd03fe9 100644 --- a/src/Discord.Net/Helpers/EpochTime.cs +++ b/src/Discord.Net/Helpers/EpochTime.cs @@ -4,7 +4,8 @@ namespace Discord { internal class EpochTime { - private static readonly DateTime epoch = new DateTime(1970, 1, 1, 0, 0, 0, DateTimeKind.Utc); - public static ulong GetMilliseconds() => (ulong)(DateTime.UtcNow - epoch).TotalMilliseconds; + private const long epoch = 621355968000000000L; //1/1/1970 in Ticks + + public static long GetMilliseconds() => (DateTime.UtcNow.Ticks - epoch) / TimeSpan.TicksPerMillisecond; } } diff --git a/src/Discord.Net/Net/WebSockets/DataWebSocket.cs b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs index 450a9cd5c..d8bcce68a 100644 --- a/src/Discord.Net/Net/WebSockets/DataWebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/DataWebSocket.cs @@ -120,7 +120,7 @@ namespace Discord.Net.WebSockets return new KeepAliveCommand(); } - public void SendStatus(ulong? idleSince, int? gameId) + public void SendStatus(long? idleSince, int? gameId) { var updateStatus = new UpdateStatusCommand(); updateStatus.Payload.IdleSince = idleSince; diff --git a/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs index 2d92f6592..4402c4d03 100644 --- a/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs @@ -36,14 +36,14 @@ namespace Discord.Net.WebSockets private ushort _sequence; private long? _serverId, _channelId, _userId; private string _sessionId, _token, _encryptionMode; - private ulong _ping; + private int _ping; private Thread _sendThread, _receiveThread; public long? CurrentServerId => _serverId; public long? CurrentChannelId => _channelId; public VoiceBuffer OutputBuffer => _sendBuffer; - public int Ping => (int)_ping; + public int Ping => _ping; public VoiceWebSocket(DiscordWSClient client) : base(client) @@ -471,9 +471,9 @@ namespace Discord.Net.WebSockets break; case 3: //PONG { - ulong time = EpochTime.GetMilliseconds(); - var payload = (ulong)(long)msg.Payload; - _ping = payload - time; + long time = EpochTime.GetMilliseconds(); + var payload = (long)msg.Payload; + _ping = (int)(payload - time); //TODO: Use this to estimate latency } break;