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()
Tasking::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()

Konstruira 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. Pohranjen generator provider je sačuvan.

Tasking::ExecutableItem LocatorFileCache::matcher() const

Vraća zadatak locator matchera 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 pokrenuti matcher, inače keš neće biti ažuriran nakon završetka zadatka.

Kada se vrati LocatorMatcherTask, on se pokreće i provjerava je li ovaj predmemorijski prostor valjan. Kada je predmemorijski prostor nevaljan, koristi GeneratorProvider za ažuriranje FilePathsGeneratora predmemorijskog prostora i provjerava valjanost predmemorijskog prostora. Ako to ne uspije, zadatak se ne pokreće. Kada je predmemorijski prostor valjan, pokrenuti zadatak ponovno će koristiti predmemorirane podatke za izračunavanje rezultata LocatorMatcherTask-a.

Nakon uspješnog izvođenja zadatka, ovaj se predmemorijski prostor ažurira prema posljednjem pretraživanju. Ako je u međuvremenu ovaj predmemorijski prostor pokrenuo novo pretraživanje, poništen ili čak izbrisan, ažuriranje predmemorijskog prostora nakon uspješnog izvođenja 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 u SpotlightLocatorFilteru.

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 otkrije. 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 pripadajući LocatorMatherTask izvršava u zasebnom niti. Kada izračunavanje potpune liste putanja datoteka oduzima znatno vrijeme, taj se postupak može premjestiti u zasebni nit, pod uvjetom da se svi ovisni podaci mogu sigurno proslijediti funkciji generator kad se ta funkcija postavlja u glavnom niti.

Proslijeđeni generator uvijek se poziva isključivo iz ne-glavnog niti pri izvođenju LocatorMatcherTask-a vraćenog od 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 generatora FilePathsGenerator. Generator FilePathsGenerator vraća potpunu listu putanja datoteka koje se koriste za obradu filtera datoteka.

Kad god je moguće odgoditi stvaranje popisa putanja datoteka tako da se to može sigurno učiniti kasnije iz pozadinske niti, na temelju nekih drugih ponovno ulaznih/sigurnim za više niti podataka, trebalo bi koristiti ovu metodu. Ostali ovisni podaci trebaju se proslijediti putem hvatanja lambe. Tijelo proslijeđenog generator a mora dodatno paziti na osiguravanje da su proslijeđeni podaci putem hvatanja lambe ponovno ulazni i da je tijelo lambe sigurno za više niti. Pogledajte primjer upotrebe generatora unutar implementacije CppIncludesFilter.

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

Napomena: Ova funkcija poništava keš, brišući sve pohranjenih podataka, 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 valjan. U tom slučaju poziva se pohranjeni provider.

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

Kada se ova funkcija pozove, keš se ne poništava. Kad god dođe do poništenja keša, npr. kada se pozove 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.