Marble/TileDownload: Difference between revisions

    From KDE TechBase
    (→‎Design considerations: update, removed obsolete stuff)
    No edit summary
    Line 9: Line 9:


    The TileLoader should be able to handle not only files, but also QByteArrays or whatever is delivered by the network plugin interface.
    The TileLoader should be able to handle not only files, but also QByteArrays or whatever is delivered by the network plugin interface.
    === Documentation of existing code ===
    Here are drop notes of understanding how downloading http stuff happens:
    {{class|HttpDownloadManager|kdeedu|4.x}} is the entry point if you want to download http things.
    This class handles download jobs by first creating a simple {{class|HttpJob|kdeedu|4.x}}, and providing it to one of the {{class|DownloadQueueSet|kdeedu|4.x}} classes which can behave according to various {{class|DownloadPolicyKey|kdeedu|4.x}}.
    A {{class|StoragePolicy|kdeedu|4.x}} belongs to the HttpDownloadManager to handle downloaded files properly.
    It also relies on the {{class|PluginManager|kdeedu|4.x}} to provide a {{class|NetworkPlugin|kdeedu|4.x}} which implements the createJob
    In the current imlementation (trunk just after 4.4 branching), there are many
    HttpDownloadManagers, which in turn have their own PluginManager, StoragePolicy and DownloadQueueSets. This looks suboptimal and hard to evolve.
    === Current Work ===
    - Work is ongoing to have only one PluginManager belonging in the {{class|MarbleModel|kdeedu|4.x}}, which others could use when needed, currently
    * {{class|LayerManager|kdeedu|4.x}},
    * {{class|HttpDownloadManager|kdeedu|4.x}},
    * {{class|PositionTracking|kdeedu|4.x}}
    So HttpDownloadManagers would need to use it.
    - Many HttpDownloadManagers created "in the wild" for different purposes, like in
    * {{class|AbstractDataPluginModel|kdeedu|4.x}} (and so all *PluginModel which inherit...),
    * {{class|MarbleModel|kdeedu|4.x}},
    * {{class|TwitterPlugin|kdeedu|4.x}}
    Maybe one would be enough, given the DownloadQueues and StoragePolicies framework...


    === Design proposal ===
    === Design proposal ===


    to be done
    to be done

    Revision as of 22:41, 20 January 2010

    Design considerations, ideas, thoughts, nothing final

    Perhaps create an (abstract) interface / abstract class TileProvider? Not sure, if there is an use case.

    Perhaps separation between http download and tile providing since http download is needed for wikipedia (and perhaps other stuff) integration also.

    What about redirects? in general it seems to be a good idea to support them, but do we also need the ability to forbid redirects of inform the user?

    The TileLoader should be able to handle not only files, but also QByteArrays or whatever is delivered by the network plugin interface.


    Documentation of existing code

    Here are drop notes of understanding how downloading http stuff happens:

    Expression error: Unrecognized word "x". is the entry point if you want to download http things.

    This class handles download jobs by first creating a simple Expression error: Unrecognized word "x"., and providing it to one of the Expression error: Unrecognized word "x". classes which can behave according to various Expression error: Unrecognized word "x"..

    A Expression error: Unrecognized word "x". belongs to the HttpDownloadManager to handle downloaded files properly.

    It also relies on the Expression error: Unrecognized word "x". to provide a Expression error: Unrecognized word "x". which implements the createJob

    In the current imlementation (trunk just after 4.4 branching), there are many HttpDownloadManagers, which in turn have their own PluginManager, StoragePolicy and DownloadQueueSets. This looks suboptimal and hard to evolve.

    Current Work

    - Work is ongoing to have only one PluginManager belonging in the Expression error: Unrecognized word "x"., which others could use when needed, currently

    * Expression error: Unrecognized word "x".,
    * Expression error: Unrecognized word "x".,
    * Expression error: Unrecognized word "x".
    

    So HttpDownloadManagers would need to use it.

    - Many HttpDownloadManagers created "in the wild" for different purposes, like in

    * Expression error: Unrecognized word "x". (and so all *PluginModel which inherit...),
    * Expression error: Unrecognized word "x".,
    * Expression error: Unrecognized word "x".
    

    Maybe one would be enough, given the DownloadQueues and StoragePolicies framework...

    Design proposal

    to be done