Browse Source

Removed virtual servers

tags/docs-0.9
RogueException 9 years ago
parent
commit
aaab26561b
7 changed files with 39 additions and 89 deletions
  1. +1
    -1
      src/Discord.Net/DiscordClient.Channels.cs
  2. +1
    -14
      src/Discord.Net/DiscordClient.Roles.cs
  3. +0
    -27
      src/Discord.Net/DiscordClient.Servers.cs
  4. +35
    -42
      src/Discord.Net/DiscordClient.cs
  5. +0
    -3
      src/Discord.Net/Helpers/AsyncCollection.cs
  6. +1
    -1
      src/Discord.Net/Models/Channel.cs
  7. +1
    -1
      src/Discord.Net/Models/User.cs

+ 1
- 1
src/Discord.Net/DiscordClient.Channels.cs View File

@@ -106,7 +106,7 @@ namespace Discord
if (channel == null) if (channel == null)
{ {
var response = await _api.CreatePMChannel(_userId, member.Id).ConfigureAwait(false); var response = await _api.CreatePMChannel(_userId, member.Id).ConfigureAwait(false);
var recipient = _members.GetOrAdd(response.Recipient?.Id, _servers.PMServer.Id);
var recipient = _members.GetOrAdd(response.Recipient?.Id, null);
recipient.Update(response.Recipient); recipient.Update(response.Recipient);
channel = _channels.GetOrAdd(response.Id, response.GuildId, response.Recipient?.Id); channel = _channels.GetOrAdd(response.Id, response.GuildId, response.Recipient?.Id);
channel.Update(response); channel.Update(response);


+ 1
- 14
src/Discord.Net/DiscordClient.Roles.cs View File

@@ -12,20 +12,7 @@ namespace Discord


public Roles(DiscordClient client, object writerLock) public Roles(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }

internal Role CreateVirtualRole(string serverId, string name)
{
var role = new Role(_client, serverId, serverId);
_dictionary[serverId] = role;
role.Update(new API.RoleInfo
{
Id = serverId,
Name = name,
Permissions = ServerPermissions.None.RawValue
});
return role;
}

public Role GetOrAdd(string id, string serverId) public Role GetOrAdd(string id, string serverId)
=> GetOrAdd(id, () => new Role(_client, id, serverId)); => GetOrAdd(id, () => new Role(_client, id, serverId));
} }


+ 0
- 27
src/Discord.Net/DiscordClient.Servers.cs View File

@@ -8,36 +8,9 @@ namespace Discord
{ {
internal sealed class Servers : AsyncCollection<Server> internal sealed class Servers : AsyncCollection<Server>
{ {
public Server PMServer { get; private set; }

public Servers(DiscordClient client, object writerLock) public Servers(DiscordClient client, object writerLock)
: base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { } : base(client, writerLock, x => x.OnCached(), x => x.OnUncached()) { }


protected override void Initialize()
{
PMServer = CreateVirtualServer("Private");
}

private Server CreateVirtualServer(string name)
{
string id = $"[{name}]";
var server = new Server(_client, id) { IsVirtual = true };
_dictionary[id] = server;

var everyone = _client.Roles.CreateVirtualRole(id, "@everyone");
server.Update(new API.GuildInfo
{
Id = id,
Name = id,
JoinedAt = DateTime.UtcNow,
Roles = new API.RoleInfo[] { new API.RoleInfo {
Id = everyone.Id,
Name = everyone.Name
} }
});
return server;
}

public Server GetOrAdd(string id) public Server GetOrAdd(string id)
=> GetOrAdd(id, () => new Server(_client, id)); => GetOrAdd(id, () => new Server(_client, id));
} }


+ 35
- 42
src/Discord.Net/DiscordClient.cs View File

@@ -46,13 +46,6 @@ namespace Discord
_servers = new Servers(this, cacheLock); _servers = new Servers(this, cacheLock);
_users = new Users(this, cacheLock); _users = new Users(this, cacheLock);


_channels.Clear();
_members.Clear();
_messages.Clear();
_roles.Clear();
_servers.Clear();
_users.Clear();

_status = UserStatus.Online; _status = UserStatus.Online;


this.Connected += async (s, e) => this.Connected += async (s, e) =>
@@ -76,58 +69,58 @@ namespace Discord
if (_config.LogLevel >= LogMessageSeverity.Info) if (_config.LogLevel >= LogMessageSeverity.Info)
{ {
ServerCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ServerCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Created Server: {e.Server?.Name}");
$"Created Server: {e.Server?.Name ?? "[Private]"}");
ServerDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ServerDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Destroyed Server: {e.Server?.Name}");
$"Destroyed Server: {e.Server?.Name ?? "[Private]"}");
ServerUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ServerUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Server: {e.Server?.Name}");
$"Updated Server: {e.Server?.Name ?? "[Private]"}");
ServerAvailable += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ServerAvailable += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Server Available: {e.Server?.Name}");
$"Server Available: {e.Server?.Name ?? "[Private]"}");
ServerUnavailable += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ServerUnavailable += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Server Unavailable: {e.Server?.Name}");
$"Server Unavailable: {e.Server?.Name ?? "[Private]"}");
ChannelCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ChannelCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Created Channel: {e.Server?.Name}/{e.Channel?.Name}");
$"Created Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
ChannelDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ChannelDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Destroyed Channel: {e.Server?.Name}/{e.Channel?.Name}");
$"Destroyed Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ChannelUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Channel: {e.Server?.Name}/{e.Channel?.Name}");
$"Updated Channel: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}");
MessageCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, MessageCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Created Message: {e.Server?.Name}/{e.Channel?.Name}/{e.Message?.Id}");
$"Created Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, MessageDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Deleted Message: {e.Server?.Name}/{e.Channel?.Name}/{e.Message?.Id}");
$"Deleted Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
MessageUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, MessageUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Message: {e.Server?.Name}/{e.Channel?.Name}/{e.Message?.Id}");
$"Updated Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
RoleCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, RoleCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Created Role: {e.Server?.Name}/{e.Role?.Name}");
$"Created Role: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, RoleUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Role: {e.Server?.Name}/{e.Role?.Name}");
$"Updated Role: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, RoleDeleted += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Deleted Role: {e.Server?.Name}/{e.Role?.Name}");
$"Deleted Role: {e.Server?.Name ?? "[Private]"}/{e.Role?.Name}");
BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, BanAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Added Ban: {e.Server?.Name }/{e.UserId}"); $"Added Ban: {e.Server?.Name }/{e.UserId}");
BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, BanRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Removed Ban: {e.Server?.Name}/{e.UserId}");
$"Removed Ban: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
UserAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, UserAdded += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Added Member: {e.Server?.Name}/{e.UserId}");
$"Added Member: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
UserRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, UserRemoved += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Removed Member: {e.Server?.Name}/{e.UserId}");
$"Removed Member: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
MemberUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, MemberUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Member: {e.Server?.Name}/{e.UserId}");
$"Updated Member: {e.Server?.Name ?? "[Private]"}/{e.UserId}");
UserVoiceStateUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, UserVoiceStateUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
$"Updated Member (Voice State): {e.Server?.Name}/{e.UserId}");
$"Updated Member (Voice State): {e.Server?.Name ?? "[Private]"}/{e.UserId}");
ProfileUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client, ProfileUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Info, LogMessageSource.Client,
"Updated Profile"); "Updated Profile");
} }
if (_config.LogLevel >= LogMessageSeverity.Verbose) if (_config.LogLevel >= LogMessageSeverity.Verbose)
{ {
UserIsTyping += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, UserIsTyping += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client,
$"Updated User (Is Typing): {e.Server?.Name}/{e.Channel?.Name}/{e.Member?.Name}");
$"Updated User (Is Typing): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Member?.Name}");
MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, MessageReadRemotely += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client,
$"Read Message (Remotely): {e.Server?.Name}/{e.Channel?.Name}/{e.Message?.Id}");
$"Read Message (Remotely): {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
MessageSent += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, MessageSent += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client,
$"Sent Message: {e.Server?.Name}/{e.Channel?.Name}/{e.Message?.Id}");
$"Sent Message: {e.Server?.Name ?? "[Private]"}/{e.Channel?.Name}/{e.Message?.Id}");
UserPresenceUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client, UserPresenceUpdated += (s, e) => RaiseOnLog(LogMessageSeverity.Verbose, LogMessageSource.Client,
$"Updated Member (Presence): {e.Server?.Name}/{e.Member?.Name}");
$"Updated Member (Presence): {e.Server?.Name ?? "[Private]"}/{e.Member?.Name}");
_api.RestClient.OnRequest += (s, e) => _api.RestClient.OnRequest += (s, e) =>
{ {
@@ -139,18 +132,18 @@ namespace Discord
} }
if (_config.LogLevel >= LogMessageSeverity.Debug) if (_config.LogLevel >= LogMessageSeverity.Debug)
{ {
_channels.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Channel {e.Item.Server.Id}/{e.Item.Id}");
_channels.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Channel {e.Item.Server.Id}/{e.Item.Id}");
_channels.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Channel {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_channels.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Channel {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_channels.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Channels"); _channels.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Channels");
_members.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Member {e.Item.Server.Id}/{e.Item.Id}");
_members.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Member {e.Item.Server.Id}/{e.Item.Id}");
_members.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Member {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_members.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Member {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_members.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Members"); _members.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Members");
_messages.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Message {e.Item.Server.Id}/{e.Item.Channel.Id}/{e.Item.Id}");
_messages.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Message {e.Item.Server.Id}/{e.Item.Channel.Id}/{e.Item.Id}");
_messages.ItemRemapped += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Remapped Message {e.Item.Server.Id}/{e.Item.Channel.Id}/[{e.OldId} -> {e.NewId}]");
_messages.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Message {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
_messages.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Message {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Channel.Id}/{e.Item.Id}");
_messages.ItemRemapped += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Remapped Message {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Channel.Id}/[{e.OldId} -> {e.NewId}]");
_messages.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Messages"); _messages.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Messages");
_roles.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Role {e.Item.Server.Id}/{e.Item.Id}");
_roles.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Role {e.Item.Server.Id}/{e.Item.Id}");
_roles.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Role {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_roles.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Role {e.Item.Server?.Id ?? "[Private]"}/{e.Item.Id}");
_roles.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Roles"); _roles.Cleared += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Cleared Roles");
_servers.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Server {e.Item.Id}"); _servers.ItemCreated += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Created Server {e.Item.Id}");
_servers.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Server {e.Item.Id}"); _servers.ItemDestroyed += (s, e) => RaiseOnLog(LogMessageSeverity.Debug, LogMessageSource.Cache, $"Destroyed Server {e.Item.Id}");
@@ -293,7 +286,7 @@ namespace Discord
case "READY": //Resync case "READY": //Resync
{ {
var data = e.Payload.ToObject<ReadyEvent>(_serializer); var data = e.Payload.ToObject<ReadyEvent>(_serializer);
_currentUser = _members.GetOrAdd(data.User.Id, _servers.PMServer.Id);
_currentUser = _members.GetOrAdd(data.User.Id, null);
_currentUser.Update(data.User); _currentUser.Update(data.User);
foreach (var model in data.Guilds) foreach (var model in data.Guilds)
{ {
@@ -305,7 +298,7 @@ namespace Discord
} }
foreach (var model in data.PrivateChannels) foreach (var model in data.PrivateChannels)
{ {
var user = _members.GetOrAdd(model.Recipient.Id, _servers.PMServer.Id);
var user = _members.GetOrAdd(model.Recipient.Id, null);
user.Update(model.Recipient); user.Update(model.Recipient);
var channel = _channels.GetOrAdd(model.Id, null, user.Id); var channel = _channels.GetOrAdd(model.Id, null, user.Id);
channel.Update(model); channel.Update(model);
@@ -360,7 +353,7 @@ namespace Discord
Channel channel; Channel channel;
if (data.IsPrivate) if (data.IsPrivate)
{ {
var member = _members.GetOrAdd(data.Recipient.Id, _servers.PMServer.Id);
var member = _members.GetOrAdd(data.Recipient.Id, null);
member.Update(data.Recipient); member.Update(data.Recipient);
channel = _channels.GetOrAdd(data.Id, null, member.Id); channel = _channels.GetOrAdd(data.Id, null, member.Id);
} }


+ 0
- 3
src/Discord.Net/Helpers/AsyncCollection.cs View File

@@ -63,8 +63,6 @@ namespace Discord
_onUncache = onUncache; _onUncache = onUncache;
} }


protected virtual void Initialize() { }

public TValue this[string key] public TValue this[string key]
{ {
get get
@@ -131,7 +129,6 @@ namespace Discord
lock (_writerLock) lock (_writerLock)
{ {
_dictionary.Clear(); _dictionary.Clear();
Initialize();
RaiseCleared(); RaiseCleared();
} }
} }


+ 1
- 1
src/Discord.Net/Models/Channel.cs View File

@@ -86,7 +86,7 @@ namespace Discord
internal Channel(DiscordClient client, string id, string serverId, string recipientId) internal Channel(DiscordClient client, string id, string serverId, string recipientId)
: base(client, id) : base(client, id)
{ {
_serverId = serverId ?? _client.Servers.PMServer.Id;
_serverId = serverId;
_recipientId = recipientId; _recipientId = recipientId;
_permissionOverwrites = _initialPermissionsOverwrites; _permissionOverwrites = _initialPermissionsOverwrites;
_areMembersStale = true; _areMembersStale = true;


+ 1
- 1
src/Discord.Net/Models/User.cs View File

@@ -70,7 +70,7 @@ namespace Discord
internal Member(DiscordClient client, string id, string serverId) internal Member(DiscordClient client, string id, string serverId)
: base(client, id) : base(client, id)
{ {
ServerId = serverId ?? _client.Servers.PMServer.Id;
ServerId = serverId;
Status = UserStatus.Offline; Status = UserStatus.Offline;
_roleIds = _initialRoleIds; _roleIds = _initialRoleIds;
_channels = new ConcurrentDictionary<string, Channel>(); _channels = new ConcurrentDictionary<string, Channel>();


Loading…
Cancel
Save