Making KFileMetaData a framework

Vishesh Handa me at vhanda.in
Wed Aug 6 15:29:40 UTC 2014


On Wednesday, August 06, 2014 04:09:19 PM Milian Wolff wrote:
> > 
> > Hmm, how would we do async? I thought people could just run it in another
> > thread / process if they want. The only thing I can think of changing is
> > that the plugins return the result later via a signal instead of doing all
> > the work in one function.
> 
> This would be good since it makes it trivial to use it then in a background 
> Thread - essentially you'd put a worker object into some thread/task which
> then emits a signal with the data when its ready. This could be the Manager
> (which then automatically finds the correct extractor for the given
> mimetype), or a certain Extractor, if you know which one should be used.

It might just be easier to make the manager return a QRunnable with all the 
extractors for that mimetype ready to run. And then you run them in a thread 
loop.

> 
> Though note that the above does not mean that a call to extract would be 
> async. It would still be sync. But you could use QFile and its readyRead 
> signals internally to process stuff asynchronously and then emit the data
> once  the end of the file is reached. If the signals are there (see above)
> this could be done without changing the API and thus could be done later.

With Qt we have QFile and readReady signals so this can be done. But a lot of 
the extractors use third party libraries which are quite often synchronous.

> > > What about the thread safety? At a glance I would say
> > > ExtractorPluginManager is not
> 
> This should be investigated. Note that it would be fine to load the plugins
> in  the ctor (which by definition is never thread safe). Just the usage
> later to match a given data set/file against the extractors and to get some
> result out of that should be made thread safe.
> 
> Bye

-- 
Vishesh Handa


More information about the Kde-frameworks-devel mailing list