Enable binary patching

Binary patching of map data allows to obtain new map data by applying a patch on top of old map data. A patch contains a binary difference between the online recent map data and the outdated local map data of an OCM bundle.

Enabling binary patching reduces the Internet traffic used for the map update.

The following table compares results of base update and binary patching (ROW catalog) on a laptop using Wi-Fi.

Version number Base update Binary patching
Germany v62 > Germany v63 280 sec, 924.37 MB 140 sec, 128.44 MB
Germany v59 > Germany v63 216 sec, 927.46 MB 181 sec, 252.54 MB
Germany v55 > Germany v63 204 sec, 927.8 MB 193 sec, 331.2 MB

These statistics show how binary patching reduces Internet traffic (update time and size) needed for updating the map to a new version.

Note: A smaller difference between map versions needs less Internet traffic to update the map. For example, to update the map from v55 to v63 takes 193 sec and 331.2 MB. However, updating the map from v62 to v63 takes 140 sec and 128.44 MB.

To enable binary patching, specify the patch catalog HRN in ServerCatalogSettings:


olp::clientmap::datastore::ServerCatalogSettings server_catalog_settings;
server_catalog_settings.patch_catalog_hrn = "hrn:here:data::olp-here:ocm-patches";


Note: The hrn:here:data::olp-here:ocm-patches value is provided as an example. Use a patch catalog correspondent to the particular data catalog, which you are using.

Note: Applying binary patches uses resources of your device (Internet traffic, CPU, and RAM). Use them at your discretion.

Use GetStatistics API

You can use the GeStatistics API to obtain the patching statistics, which is collected during the program's lifetime.

You can call GetStatistics using the AbstractDataStoreServerAdvanced object (AbstractDataStoreServerAdvanced::GetStatistics).

For more information about DataStoreServer, refer to Manage DataStoreServer instance.

The GetStatistics API returns the following structure:


/// An object that contains data store functioning statistics during the program lifetime.
struct OCM_ACCESS_MANAGER_CPP_EXPORT Statistics
{
public:
/// Bytes transferred during retrieving bundles from the network
uint64_t total_transferred_bytes;

/// Number of bundles patched successfully
uint64_t total_patched_bundles_success;

/// Number of bundles failed to patch
uint64_t total_patched_bundles_fail;
};