diff --git a/src/Discord.Net.Commands/project.json b/src/Discord.Net.Commands/project.json index 259f9606a..5b04f1acd 100644 --- a/src/Discord.Net.Commands/project.json +++ b/src/Discord.Net.Commands/project.json @@ -12,11 +12,14 @@ "compilationOptions": { "warningsAsErrors": true }, + "dependencies": { "Discord.Net": "0.8.1-beta1" }, + "frameworks": { "net45": { }, - "dnx451": { } + "dnx451": { }, + "dnxcore50": { } } } diff --git a/src/Discord.Net.Modules/project.json b/src/Discord.Net.Modules/project.json index 85b93759c..e305cee4f 100644 --- a/src/Discord.Net.Modules/project.json +++ b/src/Discord.Net.Modules/project.json @@ -12,12 +12,15 @@ "compilationOptions": { "warningsAsErrors": true }, + "dependencies": { "Discord.Net": "0.8.1-beta1", "Discord.Net.Commands": "0.8.1-beta1" }, + "frameworks": { "net45": { }, - "dnx451": { } + "dnx451": { }, + "dnxcore50": { } } } diff --git a/src/Discord.Net/Net/Rest/RestClient.cs b/src/Discord.Net/Net/Rest/RestClient.cs index 0cc6fb276..301dc035d 100644 --- a/src/Discord.Net/Net/Rest/RestClient.cs +++ b/src/Discord.Net/Net/Rest/RestClient.cs @@ -17,8 +17,12 @@ namespace Discord.Net.Rest public RestClient(DiscordAPIClientConfig config) { _config = config; +#if !DNXCORE50 _engine = new SharpRestEngine(config); - } +#else + //_engine = new BuiltInRestEngine(config); +#endif + } public void SetToken(string token) => _engine.SetToken(token); diff --git a/src/Discord.Net/Net/Rest/SharpRestEngine.cs b/src/Discord.Net/Net/Rest/SharpRestEngine.cs index c8bb858bd..49124a802 100644 --- a/src/Discord.Net/Net/Rest/SharpRestEngine.cs +++ b/src/Discord.Net/Net/Rest/SharpRestEngine.cs @@ -1,4 +1,5 @@ -using Discord.API; +#if !DNXCORE50 +using Discord.API; using RestSharp; using System; using System.Net; @@ -82,4 +83,5 @@ namespace Discord.Net.Rest } } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs index 8d26276a2..74d036097 100644 --- a/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/VoiceWebSocket.cs @@ -131,8 +131,10 @@ namespace Discord.Net.WebSockets } else //Dont make an OS thread if we only want to capture one packet... tasks.Add(Task.Run(() => ReceiveVoiceAsync(_cancelToken))); - + +#if !DNXCORE50 tasks.Add(WatcherAsync()); +#endif if (tasks.Count > 0) { // We need to combine tasks into one because receiveThread is @@ -176,6 +178,7 @@ namespace Discord.Net.WebSockets private void ReceiveVoiceAsync(CancellationToken cancelToken) { + var closeTask = cancelToken.Wait(); try { byte[] packet, decodingBuffer = null, nonce = null, result; @@ -193,7 +196,18 @@ namespace Discord.Net.WebSockets Thread.Sleep(1); if (_udp.Available > 0) { +#if !DNXCORE50 packet = _udp.Receive(ref endpoint); +#else + //TODO: Is this really the only way to end a Receive call in DNXCore? + var receiveTask = _udp.ReceiveAsync(); + var task = Task.WhenAny(closeTask, receiveTask).Result; + if (task == closeTask) + break; + var udpPacket = receiveTask.Result; + packet = udpPacket.Buffer; + endpoint = udpPacket.RemoteEndPoint; +#endif packetLength = packet.Length; if (packetLength > 0 && endpoint.Equals(_endpoint)) @@ -367,6 +381,7 @@ namespace Discord.Net.WebSockets catch (OperationCanceledException) { } catch (InvalidOperationException) { } //Includes ObjectDisposedException } +#if !DNXCORE50 //Closes the UDP socket when _disconnectToken is triggered, since UDPClient doesn't allow passing a canceltoken private Task WatcherAsync() { @@ -374,6 +389,7 @@ namespace Discord.Net.WebSockets return cancelToken.Wait() .ContinueWith(_ => _udp.Close()); } +#endif protected override async Task ProcessMessage(string json) { diff --git a/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs similarity index 98% rename from src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old rename to src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs index 17a8f7be1..4d29b720b 100644 --- a/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs.old +++ b/src/Discord.Net/Net/WebSockets/WebSocket.BuiltIn.cs @@ -1,4 +1,5 @@ -using Discord.Helpers; +#if DNXCORE50zzz +using Discord.Helpers; using System; using System.Collections.Concurrent; using System.Collections.Generic; @@ -148,4 +149,5 @@ namespace Discord.Net.WebSockets _sendQueue.Enqueue(message); } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/Discord.Net/Net/WebSockets/WebSocket.cs b/src/Discord.Net/Net/WebSockets/WebSocket.cs index 93ea42ede..b1115a2de 100644 --- a/src/Discord.Net/Net/WebSockets/WebSocket.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocket.cs @@ -51,8 +51,12 @@ namespace Discord.Net.WebSockets _loginTimeout = client.Config.ConnectionTimeout; _cancelToken = new CancellationToken(true); _connectedEvent = new ManualResetEventSlim(false); - + +#if !DNXCORE50 _engine = new WebSocketSharpEngine(this, client.Config); +#else + //_engine = new BuiltInWebSocketEngine(this, client.Config); +#endif _engine.BinaryMessage += (s, e) => { using (var compressed = new MemoryStream(e.Data, 2, e.Data.Length - 2)) diff --git a/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs b/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs index 35e1ec888..870ed84f0 100644 --- a/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs +++ b/src/Discord.Net/Net/WebSockets/WebSocketSharpEngine.cs @@ -1,7 +1,7 @@ -using System; +#if !DNXCORE50 +using System; using System.Collections.Concurrent; using System.Collections.Generic; -using System.Net; using System.Threading; using System.Threading.Tasks; using WSSharpNWebSocket = WebSocketSharp.WebSocket; @@ -111,4 +111,5 @@ namespace Discord.Net.WebSockets _sendQueue.Enqueue(message); } } -} \ No newline at end of file +} +#endif \ No newline at end of file diff --git a/src/Discord.Net/project.json b/src/Discord.Net/project.json index 3d0b55689..28bfe64ea 100644 --- a/src/Discord.Net/project.json +++ b/src/Discord.Net/project.json @@ -17,32 +17,57 @@ "compilationOptions": { "allowUnsafe": true }, - "configurations": { - "FullDebug": { - "compilationOptions": { - "define": [ - "DEBUG", - "TRACE", - "TEST_RESPONSES" - ] - } - } - }, - "dependencies": { - "Newtonsoft.Json": "7.0.1", - "RestSharp": "105.2.3", - "WebSocketSharp": "1.0.3-rc9" - }, + "configurations": { + "FullDebug": { + "compilationOptions": { + "define": [ + "DEBUG", + "TRACE", + "TEST_RESPONSES" + ] + } + } + }, + + "dependencies": { + "Newtonsoft.Json": "7.0.1" + }, + "frameworks": { "net45": { "frameworkAssemblies": { "System.Net.Http": "4.0.0.0" - } + }, + "dependencies": { + "RestSharp": "105.2.3", + "WebSocketSharp": "1.0.3-rc9" + } }, "dnx451": { "frameworkAssemblies": { "System.Net.Http": "4.0.0.0" - } - } + }, + "dependencies": { + "RestSharp": "105.2.3", + "WebSocketSharp": "1.0.3-rc9" + } + }, + "dnxcore50": { + "dependencies": { + "System.Collections": "4.0.11-beta-23409", + "System.Collections.Concurrent": "4.0.11-beta-23409", + "System.IO.Compression": "4.0.1-beta-23409", + "System.Linq": "4.0.1-beta-23409", + "System.Net.Http": "4.0.1-beta-23409", + "System.Net.NameResolution": "4.0.0-beta-23409", + "System.Net.Sockets": "4.1.0-beta-23409", + "System.Net.Requests": "4.0.11-beta-23409", + "System.Net.WebSockets.Client": "4.0.0-beta-23409", + "System.Runtime.InteropServices": "4.0.21-beta-23409", + "System.Text.RegularExpressions": "4.0.11-beta-23409", + "System.Threading": "4.0.11-beta-23409", + "System.Threading.Thread": "4.0.0-beta-23409" + } + } } } \ No newline at end of file