mirror of
https://github.com/LamGC/ScalaBot.git
synced 2025-08-21 05:47:24 +00:00
refactor(extension): 在搜索到扩展包的情况下不再继续使用低优先级搜索器.
在高优先级搜索器找到一个或以上的扩展包时, 停止调用更低优先级的搜索器, 这有助于避免无意义的远端扩展包搜索行为, 在本地搜索到扩展包后就没有必要再触发远端搜索器搜索了.
This commit is contained in:
@ -29,7 +29,7 @@ internal class ExtensionLoader(
|
|||||||
fun getExtensions(): Set<LoadedExtensionEntry> {
|
fun getExtensions(): Set<LoadedExtensionEntry> {
|
||||||
val extensionEntries = mutableSetOf<LoadedExtensionEntry>()
|
val extensionEntries = mutableSetOf<LoadedExtensionEntry>()
|
||||||
for (extensionArtifact in bot.extensions) {
|
for (extensionArtifact in bot.extensions) {
|
||||||
val extensionFilesMap = findExtensionPackageFile(extensionArtifact)
|
val extensionFilesMap = findExtensionPackage(extensionArtifact)
|
||||||
val foundedNumber = allFoundedPackageNumber(extensionFilesMap)
|
val foundedNumber = allFoundedPackageNumber(extensionFilesMap)
|
||||||
if (checkConflict(extensionFilesMap)) {
|
if (checkConflict(extensionFilesMap)) {
|
||||||
printExtensionFileConflictError(extensionArtifact, extensionFilesMap)
|
printExtensionFileConflictError(extensionArtifact, extensionFilesMap)
|
||||||
@ -105,11 +105,19 @@ internal class ExtensionLoader(
|
|||||||
return result.size
|
return result.size
|
||||||
}
|
}
|
||||||
|
|
||||||
private fun findExtensionPackageFile(
|
private fun findExtensionPackage(
|
||||||
extensionArtifact: Artifact,
|
extensionArtifact: Artifact,
|
||||||
): Map<ExtensionPackageFinder, Set<FoundExtensionPackage>> {
|
): Map<ExtensionPackageFinder, Set<FoundExtensionPackage>> {
|
||||||
val result = mutableMapOf<ExtensionPackageFinder, Set<FoundExtensionPackage>>()
|
val result = mutableMapOf<ExtensionPackageFinder, Set<FoundExtensionPackage>>()
|
||||||
for (finder in finders) {
|
val sortedFinders = finders.sortedBy { it.getPriority() }
|
||||||
|
var highPriority = sortedFinders.first().getPriority()
|
||||||
|
|
||||||
|
for (finder in sortedFinders) {
|
||||||
|
if (finder.getPriority() > highPriority && result.isNotEmpty()) {
|
||||||
|
break
|
||||||
|
}
|
||||||
|
highPriority = finder.getPriority()
|
||||||
|
|
||||||
if (!checkExtensionPackageFinder(finder)) {
|
if (!checkExtensionPackageFinder(finder)) {
|
||||||
continue
|
continue
|
||||||
}
|
}
|
||||||
|
Reference in New Issue
Block a user