|  |  |  | @ -17,12 +17,12 @@ private val mutexMap by lazy { hashMapOf<String, Mutex>() } | 
			
		
	
		
			
				
					|  |  |  |  | private val exploreKindsMap by lazy { ConcurrentHashMap<String, List<ExploreKind>>() } | 
			
		
	
		
			
				
					|  |  |  |  | private val aCache by lazy { ACache.get("explore") } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | private fun BookSource.exploreKindsKey(): String { | 
			
		
	
		
			
				
					|  |  |  |  | private fun BookSource.getExploreKindsKey(): String { | 
			
		
	
		
			
				
					|  |  |  |  |     return MD5Utils.md5Encode(bookSourceUrl + exploreUrl) | 
			
		
	
		
			
				
					|  |  |  |  | } | 
			
		
	
		
			
				
					|  |  |  |  | 
 | 
			
		
	
		
			
				
					|  |  |  |  | suspend fun BookSource.exploreKinds(): List<ExploreKind> { | 
			
		
	
		
			
				
					|  |  |  |  |     val exploreKindsKey = exploreKindsKey() | 
			
		
	
		
			
				
					|  |  |  |  |     val exploreKindsKey = getExploreKindsKey() | 
			
		
	
		
			
				
					|  |  |  |  |     exploreKindsMap[exploreKindsKey]?.let { return it } | 
			
		
	
		
			
				
					|  |  |  |  |     val exploreUrl = exploreUrl | 
			
		
	
		
			
				
					|  |  |  |  |     if (exploreUrl.isNullOrBlank()) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -30,7 +30,7 @@ suspend fun BookSource.exploreKinds(): List<ExploreKind> { | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  |     val mutex = mutexMap[bookSourceUrl] ?: Mutex().apply { mutexMap[bookSourceUrl] = this } | 
			
		
	
		
			
				
					|  |  |  |  |     mutex.withLock { | 
			
		
	
		
			
				
					|  |  |  |  |         exploreKindsMap[exploreKindsKey()]?.let { return it } | 
			
		
	
		
			
				
					|  |  |  |  |         exploreKindsMap[exploreKindsKey]?.let { return it } | 
			
		
	
		
			
				
					|  |  |  |  |         val kinds = arrayListOf<ExploreKind>() | 
			
		
	
		
			
				
					|  |  |  |  |         var ruleStr: String = exploreUrl | 
			
		
	
		
			
				
					|  |  |  |  |         withContext(Dispatchers.IO) { | 
			
		
	
	
		
			
				
					|  |  |  | @ -72,6 +72,6 @@ suspend fun BookSource.exploreKinds(): List<ExploreKind> { | 
			
		
	
		
			
				
					|  |  |  |  | suspend fun BookSource.clearExploreKindsCache() { | 
			
		
	
		
			
				
					|  |  |  |  |     withContext(Dispatchers.IO) { | 
			
		
	
		
			
				
					|  |  |  |  |         aCache.remove(bookSourceUrl) | 
			
		
	
		
			
				
					|  |  |  |  |         exploreKindsMap.remove(exploreKindsKey()) | 
			
		
	
		
			
				
					|  |  |  |  |         exploreKindsMap.remove(getExploreKindsKey()) | 
			
		
	
		
			
				
					|  |  |  |  |     } | 
			
		
	
		
			
				
					|  |  |  |  | } |