mirror of https://github.com/zlatinb/muwire
handle hash searches for collections
parent
4e8a3c2296
commit
dd622b1c0d
|
@ -305,6 +305,7 @@ public class Core {
|
||||||
register(UIDownloadCollectionEvent.class, collectionManager)
|
register(UIDownloadCollectionEvent.class, collectionManager)
|
||||||
register(FileDownloadedEvent.class, collectionManager)
|
register(FileDownloadedEvent.class, collectionManager)
|
||||||
register(FileUnsharedEvent.class, collectionManager)
|
register(FileUnsharedEvent.class, collectionManager)
|
||||||
|
register(SearchEvent.class, collectionManager)
|
||||||
}
|
}
|
||||||
|
|
||||||
log.info("initializing mesh manager")
|
log.info("initializing mesh manager")
|
||||||
|
|
|
@ -13,12 +13,15 @@ import java.util.concurrent.ThreadFactory
|
||||||
import java.util.logging.Level
|
import java.util.logging.Level
|
||||||
|
|
||||||
import com.muwire.core.EventBus
|
import com.muwire.core.EventBus
|
||||||
|
import com.muwire.core.SharedFile
|
||||||
import com.muwire.core.InfoHash
|
import com.muwire.core.InfoHash
|
||||||
import com.muwire.core.MuWireSettings
|
import com.muwire.core.MuWireSettings
|
||||||
import com.muwire.core.files.AllFilesLoadedEvent
|
import com.muwire.core.files.AllFilesLoadedEvent
|
||||||
import com.muwire.core.files.FileDownloadedEvent
|
import com.muwire.core.files.FileDownloadedEvent
|
||||||
import com.muwire.core.files.FileManager
|
import com.muwire.core.files.FileManager
|
||||||
import com.muwire.core.files.FileUnsharedEvent
|
import com.muwire.core.files.FileUnsharedEvent
|
||||||
|
import com.muwire.core.search.ResultsEvent
|
||||||
|
import com.muwire.core.search.SearchEvent
|
||||||
|
|
||||||
import groovy.transform.CompileStatic
|
import groovy.transform.CompileStatic
|
||||||
import groovy.util.logging.Log
|
import groovy.util.logging.Log
|
||||||
|
@ -247,6 +250,24 @@ class CollectionManager {
|
||||||
affected.each { c ->
|
affected.each { c ->
|
||||||
diskIO.execute({delete(c)} as Runnable)
|
diskIO.execute({delete(c)} as Runnable)
|
||||||
}
|
}
|
||||||
|
}
|
||||||
|
|
||||||
|
synchronized void onSearchEvent(SearchEvent e) {
|
||||||
|
if (e.searchHash == null)
|
||||||
|
return
|
||||||
|
InfoHash ih = new InfoHash(e.searchHash)
|
||||||
|
def collection = rootToCollection.get(ih)
|
||||||
|
if (collection == null)
|
||||||
|
return
|
||||||
|
List<SharedFile> sharedFiles = new ArrayList<>()
|
||||||
|
collection.files.each { item ->
|
||||||
|
def sfs = fileManager.getRootToFiles().get(item.infoHash)
|
||||||
|
if (sfs == null || sfs.isEmpty())
|
||||||
|
return // hmm
|
||||||
|
sfs.each { sf -> sf.hit(e.persona, e.timestamp, "Collection Search")}
|
||||||
|
sharedFiles.addAll(sfs)
|
||||||
|
}
|
||||||
|
def resultEvent = new ResultsEvent(results : sharedFiles.toArray(new SharedFile[0]), uuid : e.uuid, searchEvent : e)
|
||||||
|
eventBus.publish(resultEvent)
|
||||||
}
|
}
|
||||||
}
|
}
|
||||||
|
|
Loading…
Reference in New Issue