Cleaned up several accessibilities, docstrings, and a few audio classes

This commit is contained in:
RogueException
2016-01-23 11:27:31 -04:00
parent d17a7531da
commit 8da5268cd7
6 changed files with 44 additions and 34 deletions

View File

@@ -50,34 +50,21 @@ namespace Discord.Audio
private ConnectionState _gatewayState;
internal Logger Logger { get; }
/// <summary> Gets the unique identifier for this client. </summary>
public int Id { get; }
/// <summary> Gets the service managing this client. </summary>
public AudioService Service { get; }
/// <summary> Gets the configuration object used to make this client. </summary>
public AudioServiceConfig Config { get; }
/// <summary> Gets the internal RestClient for the Client API endpoint. </summary>
public RestClient ClientAPI { get; }
/// <summary> Gets the internal WebSocket for the Gateway event stream. </summary>
public GatewaySocket GatewaySocket { get; }
/// <summary> Gets the internal WebSocket for the Voice control stream. </summary>
public VoiceSocket VoiceSocket { get; }
/// <summary> Gets the JSON serializer used by this client. </summary>
public JsonSerializer Serializer { get; }
/// <summary> </summary>
public Stream OutputStream { get; }
/// <summary> Gets a cancellation token that triggers when the client is manually disconnected. </summary>
public CancellationToken CancelToken { get; private set; }
/// <summary> Gets the session id for the current connection. </summary>
public string SessionId { get; private set; }
/// <summary> Gets the current state of this client. </summary>
public ConnectionState State => VoiceSocket.State;
/// <summary> Gets the server this client is bound to. </summary>
public Server Server => VoiceSocket.Server;
/// <summary> Gets the channel </summary>
public Channel Channel => VoiceSocket.Channel;
public AudioClient(DiscordClient client, Server server, int id)
@@ -116,7 +103,6 @@ namespace Discord.Audio
OutputStream = new OutStream(this);
}
/// <summary> Connects to the Discord server with the provided token. </summary>
public async Task Connect()
{
if (Config.EnableMultiserver)
@@ -172,7 +158,6 @@ namespace Discord.Audio
_gatewayState = ConnectionState.Connected;
}
/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>
public async Task Disconnect()
{
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)
{
if (data == null) throw new ArgumentException(nameof(data));
@@ -291,14 +273,11 @@ namespace Discord.Audio
VoiceSocket.SendPCMFrames(data, offset, count);
}
/// <summary> Clears the PCM buffer. </summary>
public void Clear()
{
if (VoiceSocket.Server == null) return; //Has been closed
VoiceSocket.ClearPCMFrames();
}
/// <summary> Returns a task that completes once the voice output buffer is empty. </summary>
public void Wait()
{
if (VoiceSocket.Server == null) return; //Has been closed

View File

@@ -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;
namespace Discord.Audio
{
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; }
/// <summary> Gets the channel this client is currently a member of. </summary>
Channel Channel { get; }
/// <summary> Gets the server this client is bound to. </summary>
Server Server { get; }
/// <summary> Gets a stream object that wraps the Send() function. </summary>
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);
/// <summary> Disconnects from the Discord server, canceling any pending requests. </summary>
Task Disconnect();
/// <summary> Sends a PCM frame to the voice server. Will block until space frees up in the outgoing buffer. </summary>

View File

@@ -4,13 +4,13 @@ using System.Security;
namespace Discord.Audio.Opus
{
public enum OpusApplication : int
internal enum OpusApplication : int
{
Voice = 2048,
MusicOrMixed = 2049,
LowLatency = 2051
}
public enum OpusError : int
internal enum OpusError : int
{
OK = 0,
BadArg = -1,
@@ -22,7 +22,7 @@ namespace Discord.Audio.Opus
AllocFail = -7
}
public abstract class OpusConverter : IDisposable
internal abstract class OpusConverter : IDisposable
{
protected enum Ctl : int
{

View File

@@ -2,7 +2,6 @@
namespace Discord.Audio.Opus
{
/// <summary> Opus codec wrapper. </summary>
internal class OpusDecoder : OpusConverter
{
/// <summary> Creates a new Opus decoder. </summary>

View File

@@ -2,7 +2,6 @@
namespace Discord.Audio.Opus
{
/// <summary> Opus codec wrapper. </summary>
internal class OpusEncoder : OpusConverter
{
/// <summary> Gets the bit rate in kbit/s. </summary>

View File

@@ -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;
namespace Discord.Audio
@@ -9,9 +12,17 @@ namespace Discord.Audio
public Server Server { get; }
public ConnectionState State => _client.VoiceSocket.Server == Server ? _client.VoiceSocket.State : ConnectionState.Disconnected;
public Channel Channel => _client.VoiceSocket.Server == Server ? _client.VoiceSocket.Channel : null;
public Stream OutputStream => _client.VoiceSocket.Server == Server ? _client.OutputStream : null;
public int Id => 0;
public string SessionId => _client.Server == Server ? _client.SessionId : 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)
{