Browse Source

Clean up collections and references properly

tags/docs-0.9
RogueException 9 years ago
parent
commit
b7ad4f603d
5 changed files with 23 additions and 21 deletions
  1. +11
    -5
      src/Discord.Net/Models/Channel.cs
  2. +1
    -6
      src/Discord.Net/Models/Invite.cs
  3. +2
    -4
      src/Discord.Net/Models/Message.cs
  4. +0
    -1
      src/Discord.Net/Models/Role.cs
  5. +9
    -5
      src/Discord.Net/Models/User.cs

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

@@ -96,7 +96,6 @@ namespace Discord
var server = _client.Servers[_serverId];
server.AddChannel(this);
Server = server;
Recipient = null;
}
}
internal override void OnUncached()
@@ -104,13 +103,17 @@ namespace Discord
var server = Server;
if (server != null)
server.RemoveChannel(this);
Server = null;
var recipient = Recipient;
if (recipient != null)
recipient.GlobalUser.PrivateChannel = null;
Recipient = recipient;
}
var globalMessages = _client.Messages;
var messages = _messages;
foreach (var message in messages)
globalMessages.TryRemove(message.Key);
_messages.Clear();
}

internal void Update(ChannelReference model)
{
@@ -148,7 +151,10 @@ namespace Discord
{
var oldest = _messages.Select(x => x.Value.Id).OrderBy(x => x).FirstOrDefault();
if (oldest != null)
_client.Messages.TryRemove(oldest);
{
if (_messages.TryRemove(oldest, out message))
_client.Messages.TryRemove(oldest);
}
}
_messages.TryAdd(message.Id, message);
}


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

@@ -72,12 +72,7 @@ namespace Discord
Channel = channel;
}
}
internal override void OnUncached()
{
Server = null;
Inviter = null;
Channel = null;
}
internal override void OnUncached() { }

public override string ToString() => XkcdCode ?? Id;


+ 2
- 4
src/Discord.Net/Models/Message.cs View File

@@ -167,12 +167,10 @@ namespace Discord
var channel = Channel;
if (channel != null)
channel.RemoveMessage(this);
Channel = null;

var user = User;
/*if (user != null)
/*var user = User;
if (user != null)
user.RemoveMessage(this);*/
User = null;
}

internal void Update(MessageInfo model)


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

@@ -56,7 +56,6 @@ namespace Discord
var server = Server;
if (server != null)
server.RemoveRole(this);
Server = null;
}

internal void Update(RoleInfo model)


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

@@ -82,14 +82,16 @@ namespace Discord
}
internal override void OnCached()
{
var server = _client.Servers[_serverId];
if (server != null)
if (_serverId != null)
{
var server = _client.Servers[_serverId];
server.AddMember(this);
if (Id == _client.CurrentUserId)
server.CurrentMember = this;
Server = server;
}
else
UpdateRoles(null);

var user = _client.GlobalUsers.GetOrAdd(Id);
user.AddUser(this);
@@ -105,12 +107,10 @@ namespace Discord
if (Id == _client.CurrentUserId)
server.CurrentMember = null;
}
Server = null;

var globalUser = GlobalUser;
if (globalUser != null)
globalUser.RemoveUser(this);
GlobalUser = null;
}

public override string ToString() => Id;
@@ -182,7 +182,11 @@ namespace Discord
}
private void UpdateRoles(IEnumerable<Role> roles)
{
var newRoles = roles.ToDictionary(x => x.Id, x => x);
Dictionary<string, Role> newRoles;
if (roles != null)
newRoles = roles.ToDictionary(x => x.Id, x => x);
else
newRoles = new Dictionary<string, Role>();
Role everyone;
if (_serverId != null)
everyone = Server.EveryoneRole;


Loading…
Cancel
Save