Browse Source

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

tags/docs-0.9
RogueException 9 years ago
parent
commit
8da5268cd7
6 changed files with 44 additions and 34 deletions
  1. +3
    -24
      src/Discord.Net.Audio/AudioClient.cs
  2. +23
    -1
      src/Discord.Net.Audio/IAudioClient.cs
  3. +3
    -3
      src/Discord.Net.Audio/Opus/OpusConverter.cs
  4. +0
    -1
      src/Discord.Net.Audio/Opus/OpusDecoder.cs
  5. +0
    -1
      src/Discord.Net.Audio/Opus/OpusEncoder.cs
  6. +15
    -4
      src/Discord.Net.Audio/VirtualClient.cs

+ 3
- 24
src/Discord.Net.Audio/AudioClient.cs 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


+ 23
- 1
src/Discord.Net.Audio/IAudioClient.cs 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>


+ 3
- 3
src/Discord.Net.Audio/Opus/OpusConverter.cs 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
{


+ 0
- 1
src/Discord.Net.Audio/Opus/OpusDecoder.cs 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>


+ 0
- 1
src/Discord.Net.Audio/Opus/OpusEncoder.cs 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>


+ 15
- 4
src/Discord.Net.Audio/VirtualClient.cs 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)
{


Loading…
Cancel
Save