#
05880d13 |
| 16-Sep-2020 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot: Custom List Removal (Depots)
Remove use of custom list class where it is not really required in the area of Depots. Also convert the use of Depots to be wrapped in BReference to match o
HaikuDepot: Custom List Removal (Depots)
Remove use of custom list class where it is not really required in the area of Depots. Also convert the use of Depots to be wrapped in BReference to match other model objects. At the same time some data-loading logic has been simplified.
Relates To #15534
Change-Id: Ie6fcc35f258a0c69c44990e4b09f6c32ec79945d Reviewed-on: https://review.haiku-os.org/c/haiku/+/3225 Reviewed-by: Rene Gollent <rene@gollent.com>
show more ...
|
#
f0e491d3 |
| 28-Jul-2020 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot: Icon / Tarball Handling
Instead of exploding the tar-ball of icons from HDS, keep it as a tar-ball, index it and read data directly out from specific indicies on demand.
This will speed
HaikuDepot: Icon / Tarball Handling
Instead of exploding the tar-ball of icons from HDS, keep it as a tar-ball, index it and read data directly out from specific indicies on demand.
This will speed up the process of downloading the icons by removing the unpack. Also updates will be faster by avoiding the need to delete the old icon files.
Because icons are loaded on-demand, the start time is faster by avoiding all the icon loads. There are also savings on memory consumption.
Indexing on each load is surprisingly fast so no external index is maintained. Likewise for the tar-balls's meta-data.
This commit does not cover the implementation of an LRU cache of the icons in memory.
Relates to #15370
Change-Id: Ia1647d8c805be89618f493d2592bf7877fca3f14 Reviewed-on: https://review.haiku-os.org/c/haiku/+/3205 Reviewed-by: Adrien Destugues <pulkomandy@gmail.com>
show more ...
|
#
3369e03d |
| 15-Dec-2018 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot: Process and Data-loading Improvements
This change is a reshuffle of the backend processing involved in the aquisition of data from servers including the pull-down and load of HPKR data a
HaikuDepot: Process and Data-loading Improvements
This change is a reshuffle of the backend processing involved in the aquisition of data from servers including the pull-down and load of HPKR data as well as the pull-down and load of data from the HaikuDepotServer (HDS) system. The driver for this change is to implement an initial implementation of a progress bar for the loading of data as the application starts.
The following are notable changes;
* Removed some previously attempted 'functional style' logic in the model which didn't fit well with C++ * Use of the base-url in the logical mapping from HDS and HD data is no longer required and has been removed * Some logging has been improved making it clearer which part of HD is producing the logging which in turn helps with debugging issues * List class has been modified to more cleanly support sorted lists and binary searches; tests have also be updated accordingly * Reorganise and tidy-up of the data-loading processes' structures * The local repository update (HPKR) and data-load occur in background processes now in the same system as the HDS data-load - this has been crudely shifted from the MainWindow to new Processes and incorporated into the background processing system * The 'state-machine' background process runner is now replaced with a 'coordinator' style approach that can more easily handle the new processes related to HPKR loading. * Progress for loading processes is shown in the main window in the WorkStatusView - this is flickering a bit, but basically works * Added some documentation regarding how Processes work in the system * The "Refresh Repositories" menu item now also updates data from HDS * The "Refresh Repositories" menu item is disabled when the background processes are running that update the repository data
Some further refinement would be good, but this change is large enough for one round of improvements. There is an issue that the status bar is used for screenshot display as well as this data-loading, but that was the case before so it is something that can be dealt with later if it is a problem.
Change-Id: I7668307645e3aabaf7e4a6e37e2cca80cc0f489e Reviewed-on: https://review.haiku-os.org/770 Reviewed-by: waddlesplash <waddlesplash@gmail.com>
show more ...
|
#
3094fef3 |
| 19-Dec-2017 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot : More Backend Communications Improvements
* Further improves the logging and provides some basic performance numbers. * Moves the bulk-load logic out of the data-model class. * Intro
HaikuDepot : More Backend Communications Improvements
* Further improves the logging and provides some basic performance numbers. * Moves the bulk-load logic out of the data-model class. * Introduces a state-machine for the bulk-load process so that it will be more easily able to be shifted to non-blocking IO when the HTTP libraries can do that. * Implements concurrent loading of the bulk-data to hopefully improve lead time for icons and meta-data. * Loads data to a temporary file and then moves to the final location in order to avoid partially written data in the cache. * Handles situations where no network is available; prevents attempt to access the network. * Allows bulk-load processes to be cancelled when the application quits. * Introduces command-line arguments to help simulate scenarios to help with testing performance and network absence. * Implements ordered insert and binary search in the 'List' class + basic unit test.
show more ...
|
#
3d528c4a |
| 03-Nov-2017 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot: Change communication mechanism with server for repos
(last commit with same title only included new files - added those now)
Previously the desktop application would make a number of JS
HaikuDepot: Change communication mechanism with server for repos
(last commit with same title only included new files - added those now)
Previously the desktop application would make a number of JSON-RPC calls over HTTP to get the repositories. Now it will make a single call to get the repositories and cache the result. This uses standard HTTP cache signalling techniques and allows the server-side the ability to cache the generated data as well. Note that the model classes and parse- related classes are generated and may not be code-style compliant. They are generated from JSON schema files in the server-side project. Information about this as well as the python files used to generate the C++ classes and headers are included in the server-side project.
show more ...
|
#
a1c3daa6 |
| 01-Aug-2017 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot : Streaming Icon Meta-Data Parser
More background work for later performance improvements. This change generalizes the parsing of meta-data from JSON streams as similarly structured meta-
HaikuDepot : Streaming Icon Meta-Data Parser
More background work for later performance improvements. This change generalizes the parsing of meta-data from JSON streams as similarly structured meta-data is anticipated to be carried in other payloads. Unit tests have also been implemented to provide coverage on this new functionality.
show more ...
|
#
7407e36a |
| 31-Jan-2017 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot; date formatting and location header handling
The existing HTTP header date format handling code is employed rather than using specific logic for HD. Also the "Location" header handling
HaikuDepot; date formatting and location header handling
The existing HTTP header date format handling code is employed rather than using specific logic for HD. Also the "Location" header handling is changed to work better for non-absolute URLs arriving in this header value on a redirect. Both suggestions from Adrien.
show more ...
|
#
19c15fec |
| 27-Jan-2017 |
Andrew Lindesay <apl@lindesay.co.nz> |
HaikuDepot: Improve icon download handling performance
Previously each icon would launch an independent HTTP request to pull down the HVIF icon data. This change means that the data will be pulled
HaikuDepot: Improve icon download handling performance
Previously each icon would launch an independent HTTP request to pull down the HVIF icon data. This change means that the data will be pulled down in bulk across all packages as a .tgz and will then be kept in a cache locally. The client-server logic will use standard "If-Modified-Since" headers to check for updates each time the HaikuDepot desktop application starts up. This arrangement will bring down the HVIF as well as bitmap icons and use the best representation it can.
Additionally, it is possible from a command-line option to log HTTP traffic verbosely and it is also possible to use an "-h" flag to display help on command-line arguments.
The code-structure around this change also anticipates some future extensions to handle other client-server improvements.
Fixes #11804
show more ...
|