Releases: heremaps/here-data-sdk-cpp
Releases · heremaps/here-data-sdk-cpp
v1.10.0
Common
- Ported the
std::shared_mutexclass from the C++17 Standard Library to use it in C++11/14 code. - Added the logging status of the network requests on the iOS platform. Now, you can see an HTTP return code for each completed request in logs.
- Fixed the proxy warning message on the Android platform.
- Added the
OpenandCloseAPIs toolp::cache::DefaultCache. You can use them to open or close individual caches. olp::client::ApiLookupClientnow caches theolp::client::OlpClientinstances internally. It enables the merging of the same URL requests inside theolp::client::OlpClientinstance.- Added merging of the same requests to the
olp::client::OlpClientclass. Internally, it merges the same requests by a URL when the payload is empty. - Removed the unnecessary sleep, which forced all requests to be at least 100 ms, from
olp::http::NetworkCurl. 2-second sleep can still occur when there are no used handles. - Added downloaded size and time of execution to logs for completed requests in
olp::http::NetworkCurl. Now, upon completion, you can see how much data was downloaded and how long the request took.
olp-cpp-sdk-authentication
- Added the
GetMyAccountAPI toolp::authentication::AuthenticationClient. It can retrieve user information based on a valid access token previously requested by the user upon sign-in. - Added the
olp::authentication::Cryptoclass. It exposes the SHA256 and HMAC-SHA256 algorithms used by the module internally.
olp-cpp-sdk-dataservice-read
- Fixed the data race inside the
olp::client::TaskSinkclass. The data race occurred when a task added another task while the destruction was ongoing and then crashed. - Adapted
olp::dataservice::read::StreamLayerClientandolp::dataservice::read::CatalogClientto useolp::client::TaskSink. - Fixed the expiration duration of the latest version. The user-provided expiration duration was not propagated to the cache.
- Merged the same concurrent
GetPartitionsrequests in theolp::dataservice::read::VersionedLayerClient. - Various changes in logging; decreased the level of messages to reduce the output.
v1.9.0
Common
- The default logger now adds a timestamp to logs.
- Fixed a crash in the
olp::cache::DefaultCache::Putmethod that occurred when the input value wasnull. - Fixed the HTTP response error that occurred when the request was canceled during the network shutdown on Windows.
olp::thread::TaskSchedulernow supports tasks with priorities. Tasks with higher priority are executed first.- Fixed the issue that occurred when the JSON parsers produced valid empty objects.
olp-cpp-sdk-dataservice-read
- Fixed the behavior of the
GetAggregatedDataandPrefetchTilesAPIs for botholp::dataservice::read::VersionedLayerClientandolp::dataservice::read::VolatileLayerClient. When the aggregated parent tile is far away, i.e. more then max. depth 4, other APIs could not find it (for example, level 14 tile aggregated on level 1). Now, the aggregated tile can be found and used by other APIs. PrefetchTilesRequest,TileRequest, andDataRequestnow support priorities.- Fixed the crash that occurred when the client was destroyed during an ongoing prefetch operation.
- Changed the behavior of
olp::dataservice::read::CatalogClient::GetLatestVersionandolp::dataservice::read::VersionedLayerClient. Now, if you do not specify a version, the SDK tries to get it from the network by default. Also, in the cache, the latest version now does not expire after five minutes. - Added new API
olp::dataservice::read::VersionedLayerClient::PrefetchPartitionswhich allows you to prefetch generic partitions which are not tile based.
olp-cpp-sdk-dataservice-write
- Fixed the uploading of encoded data to the HERE Blob Service. The missing
Content-Encodingheader is now added when the layer is configured as compressed. This applies toolp::dataservice::write::VersionedLayerClient,olp::dataservice::write::VolatileLayerClientandolp::dataservice::write::IndexLayerClient. - Fix the bug in the
olp::dataservice::write::StreamLayerClient::PublishDatawhen the TraceId provided by the user is ignored for data bigger than 20 MB. - Work In Progress Enhanced
olp::dataservice::write::VersionedLayerClient. ThePublishToBatchandCancelBatchmethods now useolp::thread::TaskSchedulerinstead of network threads for asynchronous operations. - Work In Progress Enhanced
olp::dataservice::write::VolatileLayerClient. ThePublishPartitionDatamethod now usesolp::thread::TaskSchedulerinstead of network threads for asynchronous operations.
v1.8.0
Common
- Work In Progress Added the
ApiKeysupport. Now, you can generate API keys on the platform and use them for reading. - Added the
ApiLookupclient. Now, you can specify a custom lookup server or provide a custom endpoint for the services (for example, a dedicated proxy). - Added the cache protection API. Now, you can mark keys as protected from eviction.
- Adapted HRN members to the coding style, made all HRN class members private, and added getters to access them.
- Added the
KeyValueCache::ContainsAPI that you can use to check if a key is in the cache. - Fixed the CMake scripts issue that occurred when a path contained whitespaces.
- Fixed the
DefaultCachebehavior that occurred when it was opened in the read-only mode. - Modified the
DefaultRetryCondition. It now retries after 429 errors. - Removed the deprecated
backdown_policyparameter fromOlpClientSettings.
olp-cpp-sdk-authentication
- Deprecated the
SignInGoogleAPI. It will be removed by 12.2020. - Fixed the bug in
DecisionAPI(decision_was uninitialized).
olp-cpp-sdk-dataservice-read
- Added the
IsCachedAPI for partition and tile keys. - Added the
Protect/Releasefunctionality. Now, you can protect specific partitions and tiles from eviction. For example, you may want a specific region to always be present in the cache. - Breaking Change Removed the deprecated
WithVersionandGetVersionmethods fromDataRequest,PrefetchTilesRequest, andPartitionsRequest. - Enhanced prefetch. Now, you can request quadtrees in parallel.
- Breaking Change Removed the deprecated constructor of the
VersionedLayerClientclass. - Added the prefetch status callback. You can use it to receive the following prefetch progress information: the number of tiles prefetched, the total number of tiles requested, and total bytes transferred.
- Added an experimental option to the prefetch API that you can use to prefetch a list of tiles as aggregated.
olp-cpp-sdk-dataservice-write
- Breaking Change Removed the deprecated
CancelAllmethods fromdataservice::write::VersionedLayerClient,dataservice::write::VolatileLayerClient, anddataservice::write::IndexLayerClient - Breaking Change Removed the deprecated
CreateDefaultCachemethod fromStreamLayerClient.h. - Work In Progress Enhanced
olp::dataservice::write::VersionedLayerClient. TheStartBatchandCompleteBatchmethods now useolp::thread::TaskSchedulerinstead of network threads for asynchronous operations. - Fixed the duplicate requests used to configure the service in
StreamLayerClient. - Fixed the upload issue in the stream layer that occurred when the layer compression was enabled on the platform at the same time as the ingest service was used.
v1.7.0
Common
- Changed the product name from HERE OLP SDK for C++ to HERE Data SDK for C++.
- Fixed formatting to be compliant with the coding style.
- Fixed the issue with
olp::client::TaskContext. Now, it does not trigger cancellation after a successful operation. - Added the
default_cache_expirationtoolp::client::OlpClientSettings. Now, you can control how long the downloaded data is considered valid. Once the data is expired, you cannot retrieve it, and it is gradually removed from the cache when new data is added. - Added the
OLP_SDK_DISABLE_DEBUG_LOGGINGCMake option. When enabled, the SDK does not print anyTRACEorDEBUGlevel log messages. - Added the
compressionsetting toolp::cache::CacheSettings. You can now pass the flag to the underlying database engine to enable or disable the data compression. - Added the
CompactAPI toolp::cache::DefaultCache. It is used to optimize the underlying mutable cache storage. Compaction also starts automatically once the database size reaches the maximum in a separate thread. - Changed the
olp::cache::DefaultCacheread operation. As a result, the number of memory allocation decreased, and performance increased. - Added support for the HTTP
OPTIONSrequest inolp::http::Network. - The LRU eviction now evicts expired elements first. The eviction time decreased.
- Removed the retry code from
olp::http::NetworkCurl. Now, retries are performed byolp::client::OlpClient. - Added a prewarm helper method to
olp::client::OlpClientSettingsFactory. This method can be used to perform DNS prefetch and TLS preconnect for certain URLs that are widely used by the clients. For example, accounts and lookup. - Enabled certificate validation in
olp::http::NetworkCurl.
olp-cpp-sdk-authentication
- The
olp::authentication::TokenProviderclass now handles the concurrent by blocking all requesters until the already triggered request completes. It verifies that only one token is requested at the same time. - The
IntrospectAppandAuthorizeAPIs now useExponentialBackdownStrategyinternally in case of a 5xx HTTP status code. olp::authentication::AuthenticationErrorclass is deprecated and will be replaced byolp::client::ApiError. It will be removed by 12.2020.- Switched the
SignInClientmethod in theolp::authentication::AuthenticationClientfunctionality toTaskContext. - Added a fallback mechanism for
SignInClient. Now, when the system time is wrong, the server time is used. - Changed the
olp::authentication::ActionResultclass. Permissions are now represented by theolp::authentication::Permissionclass. - The
use_system_timeflag inolp::authentication::Settingsis now enabled by default. Now, system time is used for token requests by default.
olp-cpp-sdk-dataservice-read
- The module now resolves all service APIs for a specific HRN in a single request.
- Reduced the number of logs produced by the component.
- Merged the same concurrent Lookup API requests into a single HTTP request.
- Merged the same concurrent
GetBlobandGetVolatileBlobAPI requests into a single HTTP request. - Merged the same concurrent
QuadTreeIndexAPI requests into a single HTTP request. - Work In Progress Added a new
ListVersionsAPI toolp::dataservice::read::CatalogClient. You can use it to get information on catalog versions. - Work In Progress Added a new
GetAggregatedDataAPI toolp::dataservice::read::VersionedLayerClient. You can use it to retrieve tile data (if it exists) or the nearest parent tile data. Use this API for tile-tree structures where children tile data is aggregated and stored in parent tiles.
v1.6.0
Common
- Added the LRU functionality to the mutable disk cache. LRU is enabled by default. You can disable it using
eviction_policyinCacheSettings. - Completed the network statistics implementation. It's available in
Network::GetStatistics. Now, you can get accumulated statistics on how many bytes are processed during each operation. - Added the missing
CORE_APIexport macros. - Updated various classes according to the Google coding style.
- Added information on backward compatibility.
- Fixed various compiler warnings.
- Minor documentation changes.
- Fixed the Android bug that made network responses incomplete.
olp-cpp-sdk-authentication
- Added the
use_system_timeflag toolp::authentication::Settings. You can use it when retrieving tokens to tellolp::authentication::TokenProviderto work with the system time instead of the server time. - Added the
olp::authentication::AuthenticationClient::Authorizemethod. You can use it to collect all permissions associated with the authenticated user or application. olp::authentication::TokenProvidernow uses the pimpl idiom. Now, when you copy an instance of this class, it does not create a new request.- Deprecated the
olp::authentication:AutoRefreshingTokenclass. It will be removed by 10.2020. - Breaking Change Removed the deprecated constructor of the
AuthenticationClientclass and the following deprecated methods:SetNetworkProxySettings,SetNetwork, andSetTaskScheduler. - The deprecation of the
olp::authentication::TokenEndpointandolp::authentication::TokenRequestclasses is extended until 10.2020.
olp-cpp-sdk-dataservice-read
- Optimized memory overhead for prefetch.
- Removed the ambiguous
PrefetchTilesRequest::WithTileKeysmethod that takes an rvalue reference.
v1.5.0
Common
- Moved the
DefaultCacheimplementation to pimpl. - Fixed various compiler warnings.
- CMake now uses the official Boost Github repository instead of downloading and unpacking the archive.
- Method
OlpClientSettingsFactory::CreateDefaultCachenow returnsnullptrif it failes to open one of the user-defined disk caches. - Work In Progress Added API to retrieve network statistics. It is not fully implemented yet, and users should not use it.
olp-cpp-sdk-authentication
- Added a new
use_system_timeflag toolp::authentication::AuthenticationSettings. You can use it to tell the authentication module to work with system time instead of server time when retrieving tokens.
olp-cpp-sdk-dataservice-read
- Added a stream layer read example. For more information, see our documentation.
- Added the
RemoveFromCachemethod toVolatileLayerClient. Now, you can remove specific partitions or tiles from the mutable cache. - Added a new
PrefetchTilesmethod toVolatileLayerClient. Now, you can prefetch volatile tiles in the same way as versioned tiles.
v1.4.0
Common
- Breaking Change Removed the deprecated
disk_pathproperty. Use thedisk_path_mutableproperty instead. - The
DefaultCacheconstructor is now explicit and takesCacheSettingsby value. - Fixed data that was not validated during reading from LevelDB when the
olp::cache::OpenOptions::CheckCrcproperty was provided. - Various improvements in
olp::http::NetworkCurlimplementation. Some legacy features were removed. - Added the
SetDefaultHeadersmethod toolp::http::Network. Now, you can set default HTTP headers for each request made byNetwork. User agents set with default headers and user agents passed with network requests are concatenated into one header. - Reduced compiler warnings about deprecated methods and classes.
olp-cpp-sdk-authentication
- Removed the deprecated
AuthenticationClient::SignInClientmethod.
olp-cpp-sdk-dataservice-read
- Added the
RemoveFromCachemethod toVersionedLayerClient. Now, you can remove specific partitions or tiles from the mutable cache. VersionedLayerClientnow triggers an error when the request is passed withFetchOption::CacheWithUpdate. It makes no sense to update data when it is available in a cache forVersionedLayerClientsince the version is locked.- Now, when you pass a request to
VersionedLayerClientorVolatileLayerClientwithFetchOption::OnlineOnly, data is not stored in a cache. It is designed for a use case when you are not interested in storing data in a cache.
olp-cpp-sdk-dataservice-write
- Deprecated the
olp::dataservice::write::StreamLayerClient::CreateDefaultCachemethod. It will be removed by 06.2020.
v1.3.0
Common
- Response headers are now stored in
olp::client::HttpResponse.olp::client::OlpClient::CallApi()collects and adds headers to the response. - X-Correlation-ID is now extracted from the HTTP response headers and used for subsequent requests in
olp::dataservice::read::StreamLayerClient. - Added a new backdown strategy to
olp::client::RetrySettings.
The default implementation isolp::client::ExponentialBackdownStrategythat restricts the maximum wait time during failed retries of network requests in theolp::network::client::OlpClientclass (both synchronous and asynchronous versions). The accumulated wait time during retries should not be longer than theRetrySettings.timeoutproperty. - Added
curl_global_init()andcurl_global_cleanup()to theolp::http::NetworkCurlclass (Linux default implementation).
For more information, see theolp::client::OlpClientSettingsFactory::CreateDefaultNetworkRequestHandler()function. - Fixed MSVC, Clang, and GCC warnings. Now, when you build with
-Wall -Wextra, you should not face any hidden warnings, as the codebase is protected by a pre-release verification job. - Fixed the possible thread concurrency problem in the
olp::client::OlpClientclass that resulted in a crash in some situations. - Reduced data copy in the JSON serializers to increase performance.
olp-cpp-sdk-authentication
- Added a new API to
olp::authentication::AuthenticationClientthat you can use to perform a generic federated authentication with a custom request body. - Added the
olp::authentication::AuthenticationClient::IntrospectApp()method that you can use to retrieve information
about the application associated with a particular access token. - Added a new
olp::authentication::AuthenticationClientconstructor usingolp::authentication::AuthenticationSettingsto setup network and task scheduler. It is a part of an ongoing authentication refactoring. Switch to this constructor instead of using the individual setters.
olp-cpp-sdk-dataservice-read
olp::dataservice::read::PartitionsRequestnow supports a list of partition IDs. This way, when you useolp::dataservice::read::VersionedLayerClientandolp::dataservice::read::VolatileLayerClient, you can also request certain partitions instead of the entire layer metadata.- Added the
Seekmethod toolp::dataservice::read::StreamLayerClient. This method can be used to start reading messages from a stream layer at any given position. - Added the
Pollmethod toolp::dataservice::read::StreamLayerClient. This method reads messages from a stream layer and commits successfully consumed messages before handing them over to you. - Added the
olp::dataservice::read::TileRequestclass and correspondingGetDataoverload toolp::dataservice::read::VersionedLayerClient. Now, you can get data using a tile key. Internally, the metadata retrieval is optimized by using a quadtree request and saves bandwidth on subsequentGetDatacalls. - Added additional fields to the
olp::dataservice::read::PartitionsRequestclass. Now, you can access the following additional metadata
fields: data size, compressed data size, checksum, and CRC. - Deprecated the
WithVersionand theGetVersionmethods in theolp::dataservice::read::DataRequest,olp::dataservice::read::PartitionsRequestandolp::dataservice::read::PrefetchTilesRequestclasses.olp::dataservice::read::VersionedLayerClientnow locks the catalog version either to the value provided on the constructor or by requesting the latest catalog version from the backend. This ensures that consistent data is provided for the instance lifecycle. - Fixed cache keys by appending 'partition' and 'partitions' to key values in
olp::dataservice::read::VolatileLayerClient. - Fixed the infinite loop in the
olp::dataservice::read::VersionedLayerClient::PrefetchTiles()method when min/max levels are not specified.
v1.2.0
v1.2.0 (04/02/2020)
Common
- Added a protected read-only cache. For details, see
olp::cache::CacheSettings. - Added a protected read-only cache usage example.
- Added ARM platform support for Embedded Linux with GCC 5.4 (32/64 bit).
- Added the
ErrorCodeToStringfunction to olp/core/http/NetworkTypes.h. - Improved the
olp::http::NetworkCurllogging. - Changed the
IsNullfunction in theolp::client::HRNclass to handle realms according to platform changes. - Added the bool operator to the
olp::client::HRNclass. You can now use the operator to check whether all the service type fields in theolp::client::HRNclass are not empty. - Fixed a possible data race in the
olp::client::Conditionclass. - Added the
MoveResultmethod to theolp::client::ApiResponseclass. The method returns an rvalue reference to the result. - CMake now requires RapidJSON v1.1.0.
- Various CMake cleanups.
- Improved error handling in Android
HttpClient. - Fixed the linking error when SDK was statically linked inside a shared library with
CMAKE_POSITION_INDEPENDENT_CODE=ON. - The retry policy now handles server errors automatically.
olp-cpp-sdk-authentication
- Added a possibility to parse credentials from a file or stream in
olp::authentication::AuthenticationCredentials. Now, to get credentials for theAuthenticationCredentialsclass, you can use the credentials.properties file that is provided by the platform. - Deprecated the
olp::authentication::TokenEndpointclass. It will be removed by 04.2020. - Deprecated the
olp::authentication::TokenRequestclass. It will be removed by 04.2020. - Deprecated various methods in
olp::authentication::AuthenticationClient. - Authentication now gets the current timestamp from the platform and uses it to request the OAuth2 token that prevents replay attacks. As a fallback, the system time is used.
olp-cpp-sdk-dataservice-read
- The
olp::dataservice::read::QueryApi,olp::dataservice::read::MetadataApi,olp::dataservice::read::LookupApi, andolp::dataservice::read::BlobApiclasses are now blocking and use the new synchronousCallApimethod inOlpClient. - The
GetDatamethod of the versioned and volatile layer now triggers theolp::client::ErrorCode::PreconditionFailederror if both a partition ID and data handle are passed in the data request. - Work-in-progress: Added reading support for streamed data using the new
olp::dataservice::read::StreamLayerClient. Currently, you can only subscribe, unsubscribe, and get data from a stream layer message.
olp-cpp-sdk-dataservice-write
- Enhanced
olp::dataservice::write::StreamLayerClientto useolp::thread::TaskSchedulerfor asynchronous operations instead of network threads. - Removed the unused
olp::dataservice::write::ThreadSafeQueueclass. - Deprecated the
CancelAllmethods in all layers. Use theCancelPendingRequestsmethods instead.
v1.1.0
v1.1.0 (11/12/2019)
Common
- The deprecated
olp::client::CancellationToken::cancel()method was removed. Useolp::client::CancellationToken::Cancel()instead. - The
curlnetwork implementation was fixed and can now compile on 32 bits architecture. - The
disk_pathfield inolp::cache::CacheSettingsis deprecated. Use thedisk_path_mutablefield instead. - A new synchronous
CallApimethod was added toolp::client::OlpClient. pipeandpipe2symbols detection are enhanced in curl.cmake.
olp-cpp-sdk-authentication
- The
SignInClientmethod inolp::authentication::AuthenticationClientis deprecated in favor of the newly introducedSignInClientmethod with a different signature. - The
scopesupport was added to OAuth2 througholp::authentication::SignInProperties. You can now access the project bound resources using theolp::authentication::SignInProperties::scopefield. - The
error_idfield was added to theErrorResponsestructure. You can use it to get theerrorIdstring from the authentication error response.
olp-cpp-sdk-dataservice-read
- The deprecated
GetCatalogMetadataVersionmethod was removed from theolp::dataservice::read::CatalogClient.
olp-cpp-sdk-dataservice-write
- Legacy and unused code were removed.