Browse Source

Store AppName/Url/Version in DiscordConfig, generate config for AudioClient

pull/36/head
RogueException 9 years ago
parent
commit
3101e23228
2 changed files with 47 additions and 11 deletions
  1. +22
    -1
      src/Discord.Net.Audio/AudioClient.cs
  2. +25
    -10
      src/Discord.Net/DiscordConfig.cs

+ 22
- 1
src/Discord.Net.Audio/AudioClient.cs View File

@@ -70,7 +70,6 @@ namespace Discord.Audio
public AudioClient(DiscordClient client, Server server, int id) public AudioClient(DiscordClient client, Server server, int id)
{ {
Id = id; Id = id;
_config = client.Config;
Service = client.GetService<AudioService>(); Service = client.GetService<AudioService>();
Config = Service.Config; Config = Service.Config;
Serializer = client.Serializer; Serializer = client.Serializer;
@@ -87,6 +86,25 @@ namespace Discord.Audio
//Networking //Networking
if (Config.EnableMultiserver) if (Config.EnableMultiserver)
{ {
//TODO: We can remove this hack when official API launches
var baseConfig = client.Config;
var builder = new DiscordConfigBuilder
{
AppName = baseConfig.AppName,
AppUrl = baseConfig.AppUrl,
AppVersion = baseConfig.AppVersion,
CacheToken = baseConfig.CacheDir != null,
ConnectionTimeout = baseConfig.ConnectionTimeout,
EnablePreUpdateEvents = false,
FailedReconnectDelay = baseConfig.FailedReconnectDelay,
LargeThreshold = 1,
LogLevel = baseConfig.LogLevel,
MessageCacheSize = 0,
ReconnectDelay = baseConfig.ReconnectDelay,
UsePermissionsCache = false
};
_config = builder.Build();

ClientAPI = new JsonRestClient(_config, DiscordConfig.ClientAPIUrl, client.Log.CreateLogger($"ClientAPI #{id}")); ClientAPI = new JsonRestClient(_config, DiscordConfig.ClientAPIUrl, client.Log.CreateLogger($"ClientAPI #{id}"));
GatewaySocket = new GatewaySocket(_config, client.Serializer, client.Log.CreateLogger($"Gateway #{id}")); GatewaySocket = new GatewaySocket(_config, client.Serializer, client.Log.CreateLogger($"Gateway #{id}"));
GatewaySocket.Connected += (s, e) => GatewaySocket.Connected += (s, e) =>
@@ -96,7 +114,10 @@ namespace Discord.Audio
}; };
} }
else else
{
_config = client.Config;
GatewaySocket = client.GatewaySocket; GatewaySocket = client.GatewaySocket;
}
GatewaySocket.ReceivedDispatch += (s, e) => OnReceivedEvent(e); GatewaySocket.ReceivedDispatch += (s, e) => OnReceivedEvent(e);
VoiceSocket = new VoiceSocket(_config, Config, client.Serializer, client.Log.CreateLogger($"Voice #{id}")); VoiceSocket = new VoiceSocket(_config, Config, client.Serializer, client.Log.CreateLogger($"Voice #{id}"));
VoiceSocket.Server = server; VoiceSocket.Server = server;


+ 25
- 10
src/Discord.Net/DiscordConfig.cs View File

@@ -34,10 +34,18 @@ namespace Discord
public bool CacheToken { get; set; } = true; public bool CacheToken { get; set; } = true;
/// <summary> Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero disables the message cache entirely. </summary> /// <summary> Gets or sets the number of messages per channel that should be kept in cache. Setting this to zero disables the message cache entirely. </summary>
public int MessageCacheSize { get; set; } = 100; public int MessageCacheSize { get; set; } = 100;
/// <summary> Gets or sets whether the permissions cache should be used. This makes operations such as User.GetPermissions(Channel), User.ServerPermissions and Channel.Members </summary>
/// <summary>
/// Gets or sets whether the permissions cache should be used.
/// This makes operations such as User.GetPermissions(Channel), User.ServerPermissions, Channel.GetUser, and Channel.Members much faster while increasing memory usage.
/// </summary>
public bool UsePermissionsCache { get; set; } = true; public bool UsePermissionsCache { get; set; } = true;
/// <summary> Gets or sets whether the a copy of a model is generated on an update event to allow a user to check which properties changed. </summary>
/// <summary> Gets or sets whether the a copy of a model is generated on an update event to allow you to check which properties changed. </summary>
public bool EnablePreUpdateEvents { get; set; } = true; public bool EnablePreUpdateEvents { get; set; } = true;
/// <summary>
/// Gets or sets the max number of users a server may have for offline users to be included in the READY packet. Max is 250.
/// Decreasing this may reduce CPU usage while increasing login time and network usage.
/// </summary>
public int LargeThreshold { get; set; } = 250;


//Events //Events


@@ -65,22 +73,32 @@ namespace Discord


public LogSeverity LogLevel { get; } public LogSeverity LogLevel { get; }
public string AppName { get; }
public string AppUrl { get; }
public string AppVersion { get; }
public string UserAgent { get; }
public string CacheDir { get; }

public int ConnectionTimeout { get; } public int ConnectionTimeout { get; }
public int ReconnectDelay { get; } public int ReconnectDelay { get; }
public int FailedReconnectDelay { get; } public int FailedReconnectDelay { get; }


public int LargeThreshold { get; } = 250;
public int LargeThreshold { get; }
public int MessageCacheSize { get; } public int MessageCacheSize { get; }
public bool UsePermissionsCache { get; } public bool UsePermissionsCache { get; }
public bool EnablePreUpdateEvents { get; } public bool EnablePreUpdateEvents { get; }


public string UserAgent { get; }
public string CacheDir { get; }


internal DiscordConfig(DiscordConfigBuilder builder) internal DiscordConfig(DiscordConfigBuilder builder)
{ {
LogLevel = builder.LogLevel; LogLevel = builder.LogLevel;


AppName = builder.AppName;
AppUrl = builder.AppUrl;
AppVersion = builder.AppVersion;
UserAgent = GetUserAgent(builder);
CacheDir = GetCacheDir(builder);

ConnectionTimeout = builder.ConnectionTimeout; ConnectionTimeout = builder.ConnectionTimeout;
ReconnectDelay = builder.ReconnectDelay; ReconnectDelay = builder.ReconnectDelay;
FailedReconnectDelay = builder.FailedReconnectDelay; FailedReconnectDelay = builder.FailedReconnectDelay;
@@ -88,12 +106,9 @@ namespace Discord
MessageCacheSize = builder.MessageCacheSize; MessageCacheSize = builder.MessageCacheSize;
UsePermissionsCache = builder.UsePermissionsCache; UsePermissionsCache = builder.UsePermissionsCache;
EnablePreUpdateEvents = builder.EnablePreUpdateEvents; EnablePreUpdateEvents = builder.EnablePreUpdateEvents;

UserAgent = GetUserAgent(builder);
CacheDir = GetCacheDir(builder);
} }


private string GetUserAgent(DiscordConfigBuilder builder)
private static string GetUserAgent(DiscordConfigBuilder builder)
{ {
StringBuilder sb = new StringBuilder(); StringBuilder sb = new StringBuilder();
if (!string.IsNullOrEmpty(builder.AppName)) if (!string.IsNullOrEmpty(builder.AppName))
@@ -115,7 +130,7 @@ namespace Discord
sb.Append($"DiscordBot ({LibUrl}, v{LibVersion})"); sb.Append($"DiscordBot ({LibUrl}, v{LibVersion})");
return sb.ToString(); return sb.ToString();
} }
private string GetCacheDir(DiscordConfigBuilder builder)
private static string GetCacheDir(DiscordConfigBuilder builder)
{ {
if (builder.CacheToken) if (builder.CacheToken)
return Path.Combine(Path.GetTempPath(), builder.AppName ?? "Discord.Net"); return Path.Combine(Path.GetTempPath(), builder.AppName ?? "Discord.Net");


Loading…
Cancel
Save