Skip to content

Commit

Permalink
bunch of things
Browse files Browse the repository at this point in the history
  • Loading branch information
F0903 committed May 6, 2023
1 parent 24f980f commit 292f23f
Show file tree
Hide file tree
Showing 5 changed files with 64 additions and 5 deletions.
30 changes: 30 additions & 0 deletions src/Discord.Net.Interactions/Discord.Net.Interactions.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -10,6 +10,36 @@
<WarningLevel>5</WarningLevel>
<TreatWarningsAsErrors>True</TreatWarningsAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net6.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net6.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net5.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net5.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|net461|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|net461|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard2.0|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Debug|netstandard2.1|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>
<PropertyGroup Condition="'$(Configuration)|$(TargetFramework)|$(Platform)'=='Release|netstandard2.1|AnyCPU'">
<WarningsNotAsErrors>CS0618</WarningsNotAsErrors>
</PropertyGroup>

<ItemGroup>
<ProjectReference Include="..\Discord.Net.Core\Discord.Net.Core.csproj" />
Expand Down
14 changes: 14 additions & 0 deletions src/Discord.Net.WebSocket/API/Voice/ResumeParams.cs
Original file line number Diff line number Diff line change
@@ -0,0 +1,14 @@
using Newtonsoft.Json;

namespace Discord.API.Voice
{
internal class ResumeParams
{
[JsonProperty("server_id")]
public ulong GuildId { get; set; }
[JsonProperty("session_id")]
public string SessionId { get; set; }
[JsonProperty("token")]
public string Token { get; set; }
}
}
7 changes: 6 additions & 1 deletion src/Discord.Net.WebSocket/ConnectionManager.cs
Original file line number Diff line number Diff line change
Expand Up @@ -25,18 +25,23 @@ internal class ConnectionManager : IDisposable

private bool _isDisposed;

private bool _handleConnectionClosedException;

public ConnectionState State { get; private set; }
public CancellationToken CancelToken { get; private set; }

internal ConnectionManager(SemaphoreSlim stateLock, Logger logger, int connectionTimeout,
Func<Task> onConnecting, Func<Exception, Task> onDisconnecting, Action<Func<Exception, Task>> clientDisconnectHandler)
Func<Task> onConnecting, Func<Exception, Task> onDisconnecting, Action<Func<Exception, Task>> clientDisconnectHandler,
bool handleConnectionClosedException = true)
{
_stateLock = stateLock;
_logger = logger;
_connectionTimeout = connectionTimeout;
_onConnecting = onConnecting;
_onDisconnecting = onDisconnecting;

_handleConnectionClosedException = handleConnectionClosedException;

clientDisconnectHandler(ex =>
{
if (ex != null)
Expand Down
16 changes: 13 additions & 3 deletions src/Discord.Net.WebSocket/DiscordVoiceApiClient.cs
Original file line number Diff line number Diff line change
@@ -1,4 +1,4 @@
using Discord.API;
using Discord.API;
using Discord.API.Voice;
using Discord.Net.Converters;
using Discord.Net.Udp;
Expand Down Expand Up @@ -36,6 +36,8 @@ internal class DiscordVoiceAPIClient : IDisposable
private readonly AsyncEvent<Func<byte[], Task>> _receivedPacketEvent = new AsyncEvent<Func<byte[], Task>>();
public event Func<Exception, Task> Disconnected { add { _disconnectedEvent.Add(value); } remove { _disconnectedEvent.Remove(value); } }
private readonly AsyncEvent<Func<Exception, Task>> _disconnectedEvent = new AsyncEvent<Func<Exception, Task>>();
public event Func<Task> ConnectionClosed { add { _connectionClosedEvent.Add(value); } remove { _connectionClosedEvent.Remove(value); } }
private readonly AsyncEvent<Func<Task>> _connectionClosedEvent = new AsyncEvent<Func<Task>>();

private readonly JsonSerializer _serializer;
private readonly SemaphoreSlim _connectionLock;
Expand Down Expand Up @@ -90,8 +92,7 @@ internal DiscordVoiceAPIClient(ulong guildId, WebSocketProvider webSocketProvide
};
WebSocketClient.Closed += async ex =>
{
await DisconnectAsync().ConfigureAwait(false);
await _disconnectedEvent.InvokeAsync(ex).ConfigureAwait(false);
await _connectionClosedEvent.InvokeAsync().ConfigureAwait(false);
};

_serializer = serializer ?? new JsonSerializer { ContractResolver = new DiscordContractResolver() };
Expand Down Expand Up @@ -129,6 +130,15 @@ public async Task SendAsync(byte[] data, int offset, int bytes)
#endregion

#region WebSocket
public async Task SendResumeConnectionAsync(string sessionId, string token)
{
await SendAsync(VoiceOpCode.Resume, new ResumeParams
{
GuildId = GuildId,
SessionId = sessionId,
Token = token
}).ConfigureAwait(false);
}
public async Task SendHeartbeatAsync(RequestOptions options = null)
{
await SendAsync(VoiceOpCode.Heartbeat, DateTimeOffset.UtcNow.ToUnixTimeMilliseconds(), options: options).ConfigureAwait(false);
Expand Down
2 changes: 1 addition & 1 deletion src/Discord.Net.WebSocket/Net/DefaultUdpSocket.cs
Original file line number Diff line number Diff line change
Expand Up @@ -123,7 +123,7 @@ public async Task SendAsync(byte[] data, int index, int count)
var newData = new byte[count];
Buffer.BlockCopy(data, index, newData, 0, count);
data = newData;
}
}
await _udp.SendAsync(data, count, _destination).ConfigureAwait(false);
}

Expand Down

0 comments on commit 292f23f

Please sign in to comment.