internal void Update(ClientState state, GuildSyncModel model) { var members = new ConcurrentDictionary <ulong, SocketGuildUser>(ConcurrentHashSet.DefaultConcurrencyLevel, (int)(model.Members.Length * 1.05)); { for (int i = 0; i < model.Members.Length; i++) { var member = SocketGuildUser.Create(this, state, model.Members[i]); members.TryAdd(member.Id, member); } DownloadedMemberCount = members.Count; for (int i = 0; i < model.Presences.Length; i++) { if (members.TryGetValue(model.Presences[i].User.Id, out SocketGuildUser member)) { member.Update(state, model.Presences[i], true); } } } _members = members; var _ = _syncPromise.TrySetResultAsync(true); /*if (!model.Large) * _ = _downloaderPromise.TrySetResultAsync(true);*/ }
public void Update(GuildSyncModel model, UpdateSource source, DataStore dataStore) { if (source == UpdateSource.Rest && IsAttached) { return; } var members = new ConcurrentDictionary <ulong, SocketGuildUser>(1, (int)(model.Presences.Length * 1.05)); { DownloadedMemberCount = 0; for (int i = 0; i < model.Members.Length; i++) { AddOrUpdateUser(model.Members[i], dataStore, members); } var _ = _syncPromise.TrySetResultAsync(true); if (!model.Large) { _ = _downloaderPromise.TrySetResultAsync(true); } for (int i = 0; i < model.Presences.Length; i++) { AddOrUpdateUser(model.Presences[i], dataStore, members); } } _members = members; }