forked from discord-jda/JDA
-
Notifications
You must be signed in to change notification settings - Fork 1
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
* Fix description for RestAction#flatMap * Remove invalid NSFW info * Fix bug in buffer allocation for ZlibDecompressor * Don't insert null into override cache * Keep a strong reference to user from members Fake members will use fake users that are not cached * Add functionality to set/get state of embed suppression (discord-jda#1117) * Add functionality to set/get state of embed suppression * Provide Enum for MessageFlags * Improve handling of events for unavailable guilds (discord-jda#1184) * Improve handling of events for unavailable guilds * Add UnavailableGuildLeaveEvent * Update docs for Guild#isAvailable * Improve ratelimit bucket handling (discord-jda#1103) * Let ChannelUpdateHandler add overrides to cache This is a bug since the override shouldn't be in the interface if the member is not actually in the cache. With the current implementation we have a cache inconsistency that could NPE. * Change handling of GuildDeleteHandler to avoid deadlock There really is no point in holding a write-lock here * Bump version * Add South Korea Region * Add getPermissionHolder method to PermissionOverride (discord-jda#1183) * Make ignored events for unavailable guilds a debug log * Add ErrorHandler utility class (discord-jda#1200) * Add ErrorHandler utility class * Improve logging of 429 warnings * Add clearReactions(String) (discord-jda#1192) * Add clearReactions(String) * Add MessageReactionRemoveEmoteEvent * Fix some outdated documentation * Log and rethrow errors in BotRateLimiter workers * Properly encode reaction emoji for clearReactionsById(...) * Updated all copyright headers for 2020 (discord-jda#1198) * Add (Guild) Invite Events (discord-jda#1196) Adds GuildInviteCreateEvent and GuildInviteDeleteEvent * Allow queued requests to finish * Support gateway intents and configurable member caching (discord-jda#1190) * First pass on member cache policy * Add INVALID_INTENTS to close code enum * Deprecate AccountType.CLIENT * Add Guild#unloadMembers * Update README with better examples * Improve handling of channel overrides * Add documentation for intents and member cache policy * Remove references to guild subscriptions * Add GuildMemberRemoveEvent * Improve retrieveMemberById and retrieveUserById * Changes to the builders, we use factory methods now :) * Disable presence cache by default * Add JDA#getGatewayIntents * Fix NPE for GUILD_UPDATE handling * Fix GuildChannel#createCopy for uncached members (discord-jda#1229) * Deprecate GuildUpdateBannerEvent#getNewBannerIdUrl (discord-jda#1217) * Allow to open private channel with user id (discord-jda#1224) * Change defaults for requester to be non-daemon and have a shorter timeout (discord-jda#1215) * Added Server Insights permission (discord-jda#1221) * Add RestAction#timeout and RestAction#deadline (discord-jda#1220) * Fix NPE in PermissionOverrideAction constructor * Fix another NPE in success handler * Documentation updates (discord-jda#1222) * Swapped manage server and manage channel in Invite#isExpanded docs (discord-jda#1210) * Document another possible null return case of Message#getMember (discord-jda#1204) * Fix EmbedBuilder constructor javadocs (discord-jda#1214) * Update example for jda-nas * Add more details to modifyMemberRoles docs * Fix typo * Added getGuildChannelById methods to ShardManager (discord-jda#1234) * Add better configuration methods to the builders (discord-jda#1240) * Update README * Add enableCache and disableCache * Add enableIntents and disableIntents * Update docs for events to mention required intents when necessary. * Deprecate the old setters for cache flags * Include voice server endpoint in connection failure logs * Initialize SelfUser for all shards before logging them in * Fix bug with new channel overrides having incorrect permissions * Add the close code to the disconnect warn * Adding a check in reaction methods before calling getTextChannel() (discord-jda#1216) * Add JDA#cancelRequests (discord-jda#1223) * Fix boost time not being handled in guild create * Add GuildVoiceStreamEvent * Fix IllegalStateException in Requester Closes discord-jda#1254 * Change reconnect code to 4900 to avoid confusion (discord-jda#1250) * Change reconnect code to 4900 to avoid confusion * And update the disconnect handling to better log things * Make resume reconnect log on debug * Log server error on error level * Add catch in gateway worker * Add Guild#getMaxFileSize and Guild.BoostTier#getMaxFileSize (discord-jda#1244) Fixes discord-jda#1243 * Add fallback operators onErrorMap and onErrorFlatMap to RestAction (discord-jda#1219) * Fix incorrect file size check * Documentation updates (discord-jda#1241) * Add note about presence update and member intents * Fix typo in readme * Add MessageChannel#retrieveReactionUsersById and update reaction related docs (discord-jda#1236) * Add requirements section to member/user events * Json Parsing Optimizations (discord-jda#1267) * Remove initial reconnect delay for resumes * Add prune overload to disable wait parameter * Add Guild#retrieveMetaData (discord-jda#1171) * Lazy load member limits for guilds * Improve implementation of update handler * Add Guild#retrieveMetaData * Add check for heartbeats in WebSocketClient (discord-jda#1282) * Add retrieveMembersByPrefix (discord-jda#1276) * Add retrieveMemberByPrefix * Add event pool configuration * Fix javadoc errors * Rename chunkSyncQueue -> chunkQueue * Create file if it doesn't exist in downloadToFile * Add members to cache from retrieveMember methods * Improve handling of join times for members * Add Message.JUMP_URL_PATTERN * Replace disconnect handling to recover from strange thread states (discord-jda#1295) * Shutdown the WebSocket connection after everything else * Use executor to shutdown in DefaultShardManager * Add methods to bulk retrieve members (discord-jda#1292) * Add methods to bulk retrieve members * Add documentation * Add missing annotations to Task interface * Use random number as nonce * Improvements to handling of Error (discord-jda#1285) * Remove usage of AssertionError * Improve handling of Errors * Change domain to discord.com (discord-jda#1288) * Fix NPE in ChannelManager#sync * Add User#getFlags (discord-jda#1271) * Add Emote#isAvailable() method Co-authored-by: Florian Spieß <business@minnced.club> Co-authored-by: Michael Ritter <ritter.michael92@gmail.com> Co-authored-by: horyu1234 <horyu1234@naver.com> Co-authored-by: DMan <DManstrator@users.noreply.github.com> Co-authored-by: Austin Keener <keeneraustin@yahoo.com> Co-authored-by: averen <31487840+averen@users.noreply.github.com> Co-authored-by: Mathéo CIMBARO <25774021+DiscowZombie@users.noreply.github.com> Co-authored-by: Artuto <artutogamer@gmail.com> Co-authored-by: Nik <nik@monsterlyrics.co> Co-authored-by: Sebo Molnár <git@mlnr.dev> Co-authored-by: gpluscb <20143778+gpluscb@users.noreply.github.com> Co-authored-by: Napster <napster@npstr.space>
- Loading branch information
1 parent
395928d
commit d82688f
Showing
559 changed files
with
11,598 additions
and
3,388 deletions.
There are no files selected for viewing
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,62 @@ | ||
/* | ||
* Copyright 2015-2020 Austin Keener, Michael Ritter, Florian Spieß, and the JDA contributors | ||
* | ||
* Licensed under the Apache License, Version 2.0 (the "License"); | ||
* you may not use this file except in compliance with the License. | ||
* You may obtain a copy of the License at | ||
* | ||
* http://www.apache.org/licenses/LICENSE-2.0 | ||
* | ||
* Unless required by applicable law or agreed to in writing, software | ||
* distributed under the License is distributed on an "AS IS" BASIS, | ||
* WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | ||
* See the License for the specific language governing permissions and | ||
* limitations under the License. | ||
*/ | ||
|
||
import net.dv8tion.jda.api.entities.Member; | ||
import net.dv8tion.jda.api.utils.MemberCachePolicy; | ||
|
||
import java.util.LinkedList; | ||
|
||
/** | ||
* Implements a Least-Recently-Used (LRU) cache (independent of guilds). | ||
* <br>The cache policy will keep track of how many members are currently cached and will removed the least recently | ||
* cached member once the maximum is reached. | ||
*/ | ||
public class LRUCachePolicy implements MemberCachePolicy | ||
{ | ||
private final int max; | ||
private final LinkedList<Long> cached = new LinkedList<>(); | ||
|
||
public LRUCachePolicy(int max) | ||
{ | ||
this.max = max; | ||
} | ||
|
||
@Override | ||
public synchronized boolean cacheMember(Member member) | ||
{ | ||
long id = member.getIdLong(); | ||
int index = cached.indexOf(id); | ||
|
||
// Special case, the member is the most recently used already | ||
if (index == 0) | ||
return true; | ||
|
||
if (index > 0) | ||
{ | ||
// Promote member to most recently used | ||
cached.remove(index); | ||
} | ||
else if (cached.size() >= max) | ||
{ | ||
// Unload LRU user | ||
long remove = cached.removeLast(); | ||
member.getJDA().unloadUser(remove); | ||
} | ||
|
||
cached.addFirst(id); | ||
return true; | ||
} | ||
} |
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Oops, something went wrong.