Na ovoj stranici

Core::LocatorFileCache Class

class Core::LocatorFileCache

Klasa LocatorFileCache obuhvaća sve odgovornosti potrebne za implementaciju predmemorije za filtre datoteka. Više...

Header: #include <LocatorFileCache>

Javne funkcije

LocatorFileCache()
void invalidate()
QtTaskTree::ExecutableItem matcher() const
void setFilePaths(const Utils::FilePaths &filePaths)
void setFilePathsGenerator(const Core::LocatorFileCache::FilePathsGenerator &generator)
void setGeneratorProvider(const Core::LocatorFileCache::GeneratorProvider &provider)

Statični javni članovi

Core::LocatorFileCache::FilePathsGenerator filePathsGenerator(const Utils::FilePaths &filePaths)
Utils::FilePaths processFilePaths(const QFuture<void> &future, const Utils::FilePaths &filePaths, bool hasPathSeparator, const QRegularExpression &regExp, const Utils::Link &inputLink, Core::LocatorFileCache::MatchedEntries *entries)

Detaljan opis

LocatorFileCache služi kao zamjena za stari BaseFileFilter sučelje.

Dokumentacija funkcija člana

LocatorFileCache::LocatorFileCache()

Izrađuje neispravnu predmemoriju.

Kesh se smatra neispravnim nakon poziva invalidate(), ili nakon poziva setFilePathsGenerator() kada su proslijeđene funkcije bile prazne.

Moguće je postaviti automatski validator za keš putem setGeneratorProvider().

Vidi također invalidate, setGeneratorProvider, setFilePathsGenerator i setFilePaths.

[static] Core::LocatorFileCache::FilePathsGenerator LocatorFileCache::filePathsGenerator(const Utils::FilePaths &filePaths)

Prilagođava popis filePaths u LocatorFileCacheGenerator. Korisno pri implementaciji GeneratorProvidera u slučajevima kada stvaranje putanja datoteka ne može biti pozvano iz ne-glavne niti.

Vidi također setFilePathsGenerator().

void LocatorFileCache::invalidate()

Oništava keš.

Da biste ga validirali, upotrijebite ili setFilePathsGenerator() ili setFilePaths(). Predmemorija se može automatski validirati ako je GeneratorProvider postavljen putem setGeneratorProvider().

Napomena: Ova funkcija trajno poništava keš, brišući sve pohranjene podatke i uklanjajući pohranjen generator. Pružatelj pohranjenog generatora je sačuvan.

QtTaskTree::ExecutableItem LocatorFileCache::matcher() const

Vraća zadatak locator matcher za keš. Zadatak, kada je uspješno dovršen, ažurira ovu instancu LocatorFileCache ako je potrebno.

LocatorFileCache LocatorFileCache Ovu metodu koriste izravno filtri FilePaths. Filter FilePaths treba interno pohraniti instancu LocatorMatcherTask. Osigurajte da instanca LocatorMatcherTask preživi tijek rada matchera, inače keš neće biti ažuriran nakon završetka zadatka.

Kada se vraćeni LocatorMatcherTask pokrene, provjerava je li ova predmemorija valjana. Kada je predmemorija nevaljana, koristi GeneratorProvider za ažuriranje FilePathsGeneratora predmemorije i provjerava valjanost predmemorije. Ako to ne uspije, zadatak se ne pokreće. Kada je keš valjan, aktivna zadatka ponovno će upotrijebiti pohranjene podatke za izračunavanje rezultata zadatka LocatorMatcherTask.

Nakon uspješnog izvršavanja zadatka, ovaj se predmemorij poslužitelja ažurira prema posljednjem pretraživanju. Ako je u međuvremenu predmemorij poslužitelja pokrenuo novo pretraživanje, poništen ili čak izbrisan, ažuriranje predmemorija poslužitelja nakon uspješnog izvršavanja zadatka zanemaruje se.

[static] Utils::FilePaths LocatorFileCache::processFilePaths(const QFuture<void> &future, const Utils::FilePaths &filePaths, bool hasPathSeparator, const QRegularExpression &regExp, const Utils::Link &inputLink, Core::LocatorFileCache::MatchedEntries *entries)

Pomoćna funkcija koja se koristi interno i od strane SpotlightLocatorFiltera.

Poziva se iz niti koja nije glavna. Otkazivanje se kontrolira pomoću proslijeđenog argumenta future. Ova funkcija periodično provjerava stanje otkazivanja future i rano se vraća kada se otkazivanje detektira. Stvara popise odgovarajućih LocatorFilterEntries kategoriziranih prema MatcherType. Ti se popisi vraćaju putem argumenta entries.

Vraća popis svih odgovarajućih datoteka.

Ova funkcija za svaku datoteku u filePaths provjerava odgovara li proslijeđenom regExp. Ako odgovara, stvara se novi zapis pomoću hasPathSeparator i inputLink te se dodaje u argument entries i u popis rezultata.

void LocatorFileCache::setFilePaths(const Utils::FilePaths &filePaths)

Omota proslijeđeni filePaths u trivijalni FilePathsGenerator i postavlja ga kao generator keša.

Napomena: Ova funkcija privremeno poništava keš, brišući sve pohranjene podatke, i vraća ga u valjano stanje s novim generatorom za proslijeđeni filePaths. Pohranjeni pružatelj generatora ostaje sačuvan.

Vidi također setGeneratorProvider.

void LocatorFileCache::setFilePathsGenerator(const Core::LocatorFileCache::FilePathsGenerator &generator)

Postavlja generator putanja datoteka.

generator služi za vraćanje potpune ulazne liste putanja datoteka kada se povezani LocatorMatherTask izvršava u zasebnom niti. Kada izračunavanje potpune liste putanja datoteka traje znatno dugo, taj se postupak može premjestiti u zasebnu nit, pod uvjetom da se svi ovisni podaci mogu sigurno proslijediti funkciji generator kad se ona postavlja u glavnoj niti.

Proslijeđeni generator uvijek se poziva isključivo iz ne-glavnog niti pri izvođenju LocatorMatcherTask-a koji je vratio matcher(). Poziva se kada je keširani podatak prazan ili kada ga je potrebno ponovno generirati zbog novog pretraživanja koje ne može ponovno upotrijebiti keš iz prethodnog pretraživanja.

Generiranje nove liste putanja datoteka može biti dugotrajan zadatak. Kako bi se zadatak prekinuo ranije u slučaju otkazivanja, može se koristiti argument future metode FilePathsGenerator. Metoda FilePathsGenerator vraća potpunu listu putanja datoteka koje se koriste za obradu filtera datoteka.

Kad god je moguće odgoditi stvaranje popisa putanja datoteka kako bi se moglo sigurno izvršiti kasnije iz pozadinske niti, na temelju nekih drugih ponovno ulaznih/sigurnim za više niti podataka, treba koristiti ovu metodu. Ostale ovisne podatke treba proslijediti putem hvatanja lambe. Tijelo proslijeđene funkcije generator mora dodatno paziti na osiguravanje da su proslijeđeni ostali podaci putem hvatanja lambe ponovno ulazivi (reentrantni) i da je tijelo lambe sigurno za višedretvene uvjete. Pogledajte primjer upotrebe generatora unutar implementacije CppIncludesFilter.

U suprotnom, kada odgađanje stvaranja popisa putanja nije sigurno, upotrijebite setFilePaths() s unaprijed pripremljenim popisom, kreiranim u glavnom niti.

Napomena: Ova funkcija poništava keš, brišući sve pohranjene podatke, i ako je proslijeđeni generator ne-prazan, keš se postavlja u valjano stanje. Pohranjeni pružatelj generatora ostaje sačuvan.

Vidi također filePathsGenerator(), setGeneratorProvider i setFilePaths.

void LocatorFileCache::setGeneratorProvider(const Core::LocatorFileCache::GeneratorProvider &provider)

Postavlja pružatelja generatora putanja datoteka.

provider služi za automatsku validaciju nevažećeg keša ponovnim stvaranjem FilePathsGeneratora. Automatska validacija se događa kada se pokreće LocatorMatcherTask koji vraća matcher(), a keš u tom trenutku nije validan. U tom slučaju se poziva pohranjeni provider.

Proslijeđena funkcija provider uvijek se poziva s glavne niti. Po potrebi se poziva prije pokretanja asinkrone zadatke koji prikuplja rezultate filtera locatora.

Kada se ova funkcija pozove, keš se ne poništava. Kad god dođe do poništenja keša, npr. kada se pozovu invalidate(), setFilePathsGenerator() ili setFilePaths(), pohranjen GeneratorProvider se zadržava. Da biste očistili pohranjen GeneratorProvider, pozovite ovu metodu s praznom funkcijom {}.

Copyright © The Qt Company Ltd. and other contributors. Documentation contributions included herein are the copyrights of their respective owners. The documentation provided herein is licensed under the terms of the GNU Free Documentation License version 1.3 as published by the Free Software Foundation. Qt and respective logos are trademarks of The Qt Company Ltd in Finland and/or other countries worldwide. All other trademarks are property of their respective owners.