Cleaned up several accessibilities, docstrings, and a few audio classes
This commit is contained in:
@@ -50,34 +50,21 @@ namespace Discord.Audio
|
|||||||
private ConnectionState _gatewayState;
|
private ConnectionState _gatewayState;
|
||||||
|
|
||||||
internal Logger Logger { get; }
|
internal Logger Logger { get; }
|
||||||
|
|
||||||
/// <summary> Gets the unique identifier for this client. </summary>
|
|
||||||
public int Id { get; }
|
public int Id { get; }
|
||||||
/// <summary> Gets the service managing this client. </summary>
|
|
||||||
public AudioService Service { get; }
|
public AudioService Service { get; }
|
||||||
/// <summary> Gets the configuration object used to make this client. </summary>
|
|
||||||
public AudioServiceConfig Config { get; }
|
public AudioServiceConfig Config { get; }
|
||||||
/// <summary> Gets the internal RestClient for the Client API endpoint. </summary>
|
|
||||||
public RestClient ClientAPI { get; }
|
public RestClient ClientAPI { get; }
|
||||||
/// <summary> Gets the internal WebSocket for the Gateway event stream. </summary>
|
|
||||||
public GatewaySocket GatewaySocket { get; }
|
public GatewaySocket GatewaySocket { get; }
|
||||||
/// <summary> Gets the internal WebSocket for the Voice control stream. </summary>
|
|
||||||
public VoiceSocket VoiceSocket { get; }
|
public VoiceSocket VoiceSocket { get; }
|
||||||
/// <summary> Gets the JSON serializer used by this client. </summary>
|
|
||||||
public JsonSerializer Serializer { get; }
|
public JsonSerializer Serializer { get; }
|
||||||
/// <summary> </summary>
|
|
||||||
public Stream OutputStream { get; }
|
public Stream OutputStream { get; }
|
||||||
|
|
||||||
/// <summary> Gets a cancellation token that triggers when the client is manually disconnected. </summary>
|
|
||||||
public CancellationToken CancelToken { get; private set; }
|
public CancellationToken CancelToken { get; private set; }
|
||||||
/// <summary> Gets the session id for the current connection. </summary>
|
|
||||||
public string SessionId { get; private set; }
|
public string SessionId { get; private set; }
|
||||||
|
|
||||||
/// <summary> Gets the current state of this client. </summary>
|
|
||||||
public ConnectionState State => VoiceSocket.State;
|
public ConnectionState State => VoiceSocket.State;
|
||||||
/// <summary> Gets the server this client is bound to. </summary>
|
|
||||||
public Server Server => VoiceSocket.Server;
|
public Server Server => VoiceSocket.Server;
|
||||||
/// <summary> Gets the channel </summary>
|
|
||||||
public Channel Channel => VoiceSocket.Channel;
|
public Channel Channel => VoiceSocket.Channel;
|
||||||
|
|
||||||
public AudioClient(DiscordClient client, Server server, int id)
|
public AudioClient(DiscordClient client, Server server, int id)
|
||||||
@@ -116,7 +103,6 @@ namespace Discord.Audio
|
|||||||
OutputStream = new OutStream(this);
|
OutputStream = new OutStream(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Connects to the Discord server with the provided token. </summary>
|
|
||||||
public async Task Connect()
|
public async Task Connect()
|
||||||
{
|
{
|
||||||
if (Config.EnableMultiserver)
|
if (Config.EnableMultiserver)
|
||||||
@@ -172,7 +158,6 @@ namespace Discord.Audio
|
|||||||
_gatewayState = ConnectionState.Connected;
|
_gatewayState = ConnectionState.Connected;
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>
|
|
||||||
public async Task Disconnect()
|
public async Task Disconnect()
|
||||||
{
|
{
|
||||||
await _taskManager.Stop(true).ConfigureAwait(false);
|
await _taskManager.Stop(true).ConfigureAwait(false);
|
||||||
@@ -277,9 +262,6 @@ namespace Discord.Audio
|
|||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Sends a PCM frame to the voice server. Will block until space frees up in the outgoing buffer. </summary>
|
|
||||||
/// <param name="data">PCM frame to send. This must be a single or collection of uncompressed 48Kz monochannel 20ms PCM frames. </param>
|
|
||||||
/// <param name="count">Number of bytes in this frame. </param>
|
|
||||||
public void Send(byte[] data, int offset, int count)
|
public void Send(byte[] data, int offset, int count)
|
||||||
{
|
{
|
||||||
if (data == null) throw new ArgumentException(nameof(data));
|
if (data == null) throw new ArgumentException(nameof(data));
|
||||||
@@ -291,14 +273,11 @@ namespace Discord.Audio
|
|||||||
VoiceSocket.SendPCMFrames(data, offset, count);
|
VoiceSocket.SendPCMFrames(data, offset, count);
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Clears the PCM buffer. </summary>
|
|
||||||
public void Clear()
|
public void Clear()
|
||||||
{
|
{
|
||||||
if (VoiceSocket.Server == null) return; //Has been closed
|
if (VoiceSocket.Server == null) return; //Has been closed
|
||||||
VoiceSocket.ClearPCMFrames();
|
VoiceSocket.ClearPCMFrames();
|
||||||
}
|
}
|
||||||
|
|
||||||
/// <summary> Returns a task that completes once the voice output buffer is empty. </summary>
|
|
||||||
public void Wait()
|
public void Wait()
|
||||||
{
|
{
|
||||||
if (VoiceSocket.Server == null) return; //Has been closed
|
if (VoiceSocket.Server == null) return; //Has been closed
|
||||||
|
|||||||
@@ -1,16 +1,38 @@
|
|||||||
using System.IO;
|
using Discord.Net.Rest;
|
||||||
|
using Discord.Net.WebSockets;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Discord.Audio
|
namespace Discord.Audio
|
||||||
{
|
{
|
||||||
public interface IAudioClient
|
public interface IAudioClient
|
||||||
{
|
{
|
||||||
|
/// <summary> Gets the unique identifier for this client. </summary>
|
||||||
|
int Id { get; }
|
||||||
|
/// <summary> Gets the session id for the current connection. </summary>
|
||||||
|
string SessionId { get; }
|
||||||
|
/// <summary> Gets the current state of this client. </summary>
|
||||||
ConnectionState State { get; }
|
ConnectionState State { get; }
|
||||||
|
/// <summary> Gets the channel this client is currently a member of. </summary>
|
||||||
Channel Channel { get; }
|
Channel Channel { get; }
|
||||||
|
/// <summary> Gets the server this client is bound to. </summary>
|
||||||
Server Server { get; }
|
Server Server { get; }
|
||||||
|
/// <summary> Gets a stream object that wraps the Send() function. </summary>
|
||||||
Stream OutputStream { get; }
|
Stream OutputStream { get; }
|
||||||
|
/// <summary> Gets a cancellation token that triggers when the client is manually disconnected. </summary>
|
||||||
|
CancellationToken CancelToken { get; }
|
||||||
|
|
||||||
|
/// <summary> Gets the internal RestClient for the Client API endpoint. </summary>
|
||||||
|
RestClient ClientAPI { get; }
|
||||||
|
/// <summary> Gets the internal WebSocket for the Gateway event stream. </summary>
|
||||||
|
GatewaySocket GatewaySocket { get; }
|
||||||
|
/// <summary> Gets the internal WebSocket for the Voice control stream. </summary>
|
||||||
|
VoiceSocket VoiceSocket { get; }
|
||||||
|
|
||||||
|
/// <summary> Moves the client to another channel on the same server. </summary>
|
||||||
Task Join(Channel channel);
|
Task Join(Channel channel);
|
||||||
|
/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>
|
||||||
Task Disconnect();
|
Task Disconnect();
|
||||||
|
|
||||||
/// <summary> Sends a PCM frame to the voice server. Will block until space frees up in the outgoing buffer. </summary>
|
/// <summary> Sends a PCM frame to the voice server. Will block until space frees up in the outgoing buffer. </summary>
|
||||||
|
|||||||
@@ -4,13 +4,13 @@ using System.Security;
|
|||||||
|
|
||||||
namespace Discord.Audio.Opus
|
namespace Discord.Audio.Opus
|
||||||
{
|
{
|
||||||
public enum OpusApplication : int
|
internal enum OpusApplication : int
|
||||||
{
|
{
|
||||||
Voice = 2048,
|
Voice = 2048,
|
||||||
MusicOrMixed = 2049,
|
MusicOrMixed = 2049,
|
||||||
LowLatency = 2051
|
LowLatency = 2051
|
||||||
}
|
}
|
||||||
public enum OpusError : int
|
internal enum OpusError : int
|
||||||
{
|
{
|
||||||
OK = 0,
|
OK = 0,
|
||||||
BadArg = -1,
|
BadArg = -1,
|
||||||
@@ -22,7 +22,7 @@ namespace Discord.Audio.Opus
|
|||||||
AllocFail = -7
|
AllocFail = -7
|
||||||
}
|
}
|
||||||
|
|
||||||
public abstract class OpusConverter : IDisposable
|
internal abstract class OpusConverter : IDisposable
|
||||||
{
|
{
|
||||||
protected enum Ctl : int
|
protected enum Ctl : int
|
||||||
{
|
{
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace Discord.Audio.Opus
|
namespace Discord.Audio.Opus
|
||||||
{
|
{
|
||||||
/// <summary> Opus codec wrapper. </summary>
|
|
||||||
internal class OpusDecoder : OpusConverter
|
internal class OpusDecoder : OpusConverter
|
||||||
{
|
{
|
||||||
/// <summary> Creates a new Opus decoder. </summary>
|
/// <summary> Creates a new Opus decoder. </summary>
|
||||||
|
|||||||
@@ -2,7 +2,6 @@
|
|||||||
|
|
||||||
namespace Discord.Audio.Opus
|
namespace Discord.Audio.Opus
|
||||||
{
|
{
|
||||||
/// <summary> Opus codec wrapper. </summary>
|
|
||||||
internal class OpusEncoder : OpusConverter
|
internal class OpusEncoder : OpusConverter
|
||||||
{
|
{
|
||||||
/// <summary> Gets the bit rate in kbit/s. </summary>
|
/// <summary> Gets the bit rate in kbit/s. </summary>
|
||||||
|
|||||||
@@ -1,4 +1,7 @@
|
|||||||
using System.IO;
|
using Discord.Net.Rest;
|
||||||
|
using Discord.Net.WebSockets;
|
||||||
|
using System.IO;
|
||||||
|
using System.Threading;
|
||||||
using System.Threading.Tasks;
|
using System.Threading.Tasks;
|
||||||
|
|
||||||
namespace Discord.Audio
|
namespace Discord.Audio
|
||||||
@@ -9,9 +12,17 @@ namespace Discord.Audio
|
|||||||
|
|
||||||
public Server Server { get; }
|
public Server Server { get; }
|
||||||
|
|
||||||
public ConnectionState State => _client.VoiceSocket.Server == Server ? _client.VoiceSocket.State : ConnectionState.Disconnected;
|
public int Id => 0;
|
||||||
public Channel Channel => _client.VoiceSocket.Server == Server ? _client.VoiceSocket.Channel : null;
|
public string SessionId => _client.Server == Server ? _client.SessionId : null;
|
||||||
public Stream OutputStream => _client.VoiceSocket.Server == Server ? _client.OutputStream : null;
|
|
||||||
|
public ConnectionState State => _client.Server == Server ? _client.State : ConnectionState.Disconnected;
|
||||||
|
public Channel Channel => _client.Server == Server ? _client.Channel : null;
|
||||||
|
public Stream OutputStream => _client.Server == Server ? _client.OutputStream : null;
|
||||||
|
public CancellationToken CancelToken => _client.Server == Server ? _client.CancelToken : CancellationToken.None;
|
||||||
|
|
||||||
|
public RestClient ClientAPI => _client.Server == Server ? _client.ClientAPI : null;
|
||||||
|
public GatewaySocket GatewaySocket => _client.Server == Server ? _client.GatewaySocket : null;
|
||||||
|
public VoiceSocket VoiceSocket => _client.Server == Server ? _client.VoiceSocket : null;
|
||||||
|
|
||||||
public VirtualClient(AudioClient client, Server server)
|
public VirtualClient(AudioClient client, Server server)
|
||||||
{
|
{
|
||||||
|
|||||||
Reference in New Issue
Block a user