Skip to content

Releases: heremaps/here-data-sdk-cpp

Release 1.16.0

13 Jun 11:16
b6a9d77

Choose a tag to compare

Common

  • Added olp::http::CertificateSettings struct to store custom certificate settings.
  • Added olp::http::NetworkInitializationSettings struct containing olp::http::CertificateSettings to be passed to olp::http::CreateDefaultNetwork(..).
  • Deprecated olp::http::CreateDefaultNetwork(). It will be removed by 05.2024. Use added olp::http::CreateDefaultNetwork(..) that take olp::http::NetworkInitializationSettings instead.
  • Added olp::client::CreateDefaultNetworkRequestHandler(..) that take olp::http::NetworkInitializationSettings as an argument.
  • Extended olp::cache::CacheSettings with extend_permissions option.
  • Extended olp::http::NetworkSettings with GetMaxConnectionLifetime() and WithMaxConnectionLifetime(..).
  • Deprecated GetRetries() and WithRetries(..) in olp::http::NetworkSettings. They will be removed by 04.2024.
  • Extended olp::http::NetworkSettings with GetConnectionTimeoutDuration(), WithConnectionTimeout(std::chrono::milliseconds timeout), GetTransferTimeoutDuration() and WithTransferTimeout(std::chrono::milliseconds timeout).
  • Deprecated GetConnectionTimeout(), WithConnectionTimeout(int timeout), GetTransferTimeout() and WithTransferTimeout(int timeout) in olp::http::NetworkSettings. They will be removed by 04.2024. Use methods that accept std::chrono::milliseconds instead.
  • Required TLS 1.2 or later for network connection.
  • Fixed CMake configuration failure when CMAKE_BUILD_TYPE CMake parameter is not set.

olp-cpp-sdk-authentication

  • Removed deprecated olp::authentication::AuthenticationError. Use client::ApiError instead.
  • Removed deprecated olp::authentication::AuthenticationClient::SignInGoogle.
  • Removed deprecated std::string olp::authentication::TokenProvider::operator()(). Use the operator with CancellationContext instead.
  • Removed deprecated olp::authentication::TokenResult::GetHttpStatus(). Use TokenResponse::GetError().GetHttpStatusCode() instead.
  • Removed deprecated olp::authentication::TokenResult::GetErrorResponse(). Use TokenResponse::GetError().GetMessage() instead.
  • Removed deprecated provider and cancel from olp::authentication::AuthenticationSettings. Use token_provider instead.
  • Used thread safe time formatting functions in AutoRefreshingToken.

Release 1.15.4

13 Mar 16:55
1c7f006

Choose a tag to compare

Common

  • Changed the log level from FATAL to ERROR in case of errors during opening cache.
  • Changed network layer implementation based on cURL to handle certificates lookup.
  • Improved documentation.
  • Improved olp::utils::Dir::Size to filter only files on Windows.
  • Added a limit of attempts for cache compaction.
  • Added libssl to the list of network libraries.

olp-cpp-sdk-dataservice-read

  • Changed the log level of repetitive log messages from INFO to DEBUG.

Release 1.15.3

19 Dec 16:07
8a609d0

Choose a tag to compare

Common

  • Fixed open behavior on the No space left errors in the protected cache. Now, the cache will be opened in the Read-Only mode if the No space left error occurs while opening the cache in the Read-Write mode.

Release 1.15.2

04 Nov 16:56
bc616d5

Choose a tag to compare

Common

  • Extended olp::client::ApiResponse with an optional payload.
  • Added support for non-copiable response types in olp::client::ApiResponse.
  • Updated the README and GettingStartedGuide documentation.
  • Added performance improvements.
  • Enabled preprocessing for generating Doxygen documentation.
  • Added the service name in the base client's URL when olp::client::ApiLookupSettings::catalog_endpoint_provider is set.
  • Fixed olp::utils::Dir::Size to traverse through all nested directories.

olp-cpp-sdk-dataservice-read

  • Extended olp::dataservice::read::DataResponse and olp::dataservice::read::DataResponseCallback with olp::client::NetworkStatistics as a payload.
  • Changed olp::dataservice::read::repository::NamedMutex to be cancellation-aware: when the request is canceled, you will not be able to lock the internal mutex.

olp-cpp-sdk-authentication

  • Changed the internal static std::regex object to local instead of the global one. The local object prevents getting the std::bad_cast exception on some compilers.
  • Improved documentation.

Release 1.15.1

16 Jun 12:06
a44d0ed

Choose a tag to compare

olp-cpp-sdk-dataservice-read

  • Hotfix Reverted pull requests #1332, and #1338 as they introduced a regression which was not caught by our test suite.

Release 1.15.0

13 Jun 08:01
860a2c3

Choose a tag to compare

Common

  • Added a new CMake option: OLP_SDK_ENABLE_ANDROID_CURL. The flag enables network layer implementation based on cURL for Android.
  • Added custom certificates lookup method based on MD5 for Android cURL network layer to bypass the discrepancy between OpenSSL 1.1.1 expecting SHA1 while certificates are beeing encoded using MD5.
  • Added HTTPS proxy support for the cURL network implementation.
  • Increased required minimal version for cURL from 7.47.0 to 7.52.0 due to the HTTPS proxy support.
  • Fixed the falsely returned errors from olp::client::OlpClient::CallApi. The olp::client::OlpClient::CallApi now propagates the correct errors from the olp::authentication::TokenProvider.
  • Replaced usage of std::stol with std::stoll for LRU expiration time evaluation.
  • The olp::utils::Dir::IsReadOnly now checks whether the target directory is present and returns false in case it is missing.
  • Changed the initial permissions on the newly created directories with olp::utils::Dir::Create from 0777 to 0774.
  • Added various performance optimizations for olp::cache::DefaultCache to speed up olp::cache::DefaultCache::Contains.
  • Improved various log messages.

olp-cpp-sdk-dataservice-read

  • Added the olp::dataservice::read::VersionedLayerClient::QuadTreeIndex API. Use this API to query the partitions for the specified tiles provided by olp::dataservice::read::TileRequest.
  • The olp::dataservice::read::PartitionsCacheRepository::FindQuadTree now reads the data from the cache starting from the lowest level first, which improves performance as the quadtrees are usually loaded 4 levels lower then the requested tile.
  • The olp::dataservice::read::CatalogClient::GetCatalog now forms correct URL when custom olp::client::CatalogEndpointProvider is used.
  • Fixed the broken chain of cancellation contexts inside olp::dataservice::read::VersionedLayerClient::PrefetchTiles method. The ongoing prefetch request can now be cancelled much faster, which avoids waiting for the ongoing sub-tasks to finish until the entire operation is cancelled.

olp-cpp-sdk-authentication

  • Added optional device_id field to the olp::authentication::AuthenticationClient::SignInProperties. This field can be used for the OAuth rate limiting per device supported by the HERE OAuth service.

Release 1.14.0

08 Feb 15:51
0296101

Choose a tag to compare

Common

  • Work In Progress Added the LMDB library as a dependency. The library is currently not used and turned off by default in CMake.
  • Added proper handling of the SSLException error to the Android implementation of olp::http::Network. Now, the error is mapped to olp::http::ErrorCode::IO_ERROR and subsequently handled as a retriable error.
  • Added proper handling of the NSURLErrorCannotConnectToHost error to the iOS implementation of olp::http::Network. Now, the error is mapped to olp::http::ErrorCode::IO_ERROR and subsequently handled as a retryable error.
  • Added the olp::cache::KeyGenerator class. Use this class to access, insert, or remove cache entries without using the Data SDK client.
  • Removed the retry code from the Android implementation of olp::http::Network. The olp::client::OlpClient class handles all retries.
  • Changed logging from stdout to stderr for the POSIX environment.
  • Moved the commonly used internal ExecuteOrSchedule method to TaskScheduler.h.
  • Work-in-progress: Added the olp::thread::ExecutionContext, olp::thread::Continuation, and olp::thread::TaskContinuation classes. They are designed to support the task continuation feature, which enables the SDK APIs to use the task scheduler more efficiently and avoid blocking the executor by pending network requests.
  • Extend the olp::utils::Base64Encode API to suport the encoding of URLs.
  • Fixed various compiler warnings.
  • Added a new CMake option: OLP_SDK_USE_LIBCRYPTO. The flag disables the libcrypto dependency.

olp-cpp-sdk-authentication

  • Added olp::core::RetrySettings to olp::authentication::AuthenticationSettings. Now, you can configure olp::authentication::AuthenticationClient to use the provided retry settings for all online requests.
  • Added a new operator to olp::authentication::TokenProvider. It accepts olp::client::CancelationContext as input and returns olp::authentication::TokenResponse. Now, authentication requests can be cancelled, and clients can forward proper error messages during authentication to the caller.
  • Added a new token_provider parameter to olp::client::AuthenticationSettings. The new token provider accepts olp::client::CancelationContext and returns the olp::client::OauthTokenResponse response. Now, the olp::client::OlpClient::CallApi calls can be cancelled during authentication.
  • Deprecated the olp::authentication::TokenProvider::operator()() method together with the olp::authentication::AuthenticationSettings::provider member. They will be removed by 10.2022.
  • Deprecated the olp::authentication::TokenResult::GetHttpStatus and olp::authentication::TokenResult::GetErrorResponse methods. They will be removed by 10.2022.
  • Fixed the falsely returned cancellation error code that occurred when a request timed out. It happened on all olp::authentication::AuthenticationClient APIs. Now, the correct error is returned.
  • Moved the deprecated olp::authentication::AutoRefreshingToken, olp::authentication::TokenEndpoint, and olp::authentication::TokenRequest classes from the public includes to the source. They are no longer available.
  • Added the endpoint_url variable and a new constructor to olp::authentication::AuthenticationCredentials.
  • Switched the SignUpHereUser and SignOut APIs in the olp::authentication::AuthenticationClient functionality to TaskContext.

olp-cpp-sdk-dataservice-read

  • Changed the olp::dataservice-read::CatalogClient::GetLatestVersion API. Now, if you use the CacheOnly fetch option and specify the cached and start versions, the latest version is resolved. The resolved version is stored in the cache. For the OnlineIfNotFound fetch option, the online version is always requested and updated in the cache if needed.
  • Changed the default olp::dataservice::read::CatalogVersionRequest::start_version_ from 0 to -1 as 0 is a valid catalog version while -1 is not.
  • Added the olp::dataservice::read::CatalogClient::GetCompatibleVersions API. Use it to query the available catalog versions that are compatible with the dependencies provided by olp::dataservice::read::CompatibleVersionsRequest.

olp-cpp-sdk-dataservice-write

  • Improved Doxygen documentation in various places.

Release 1.13.0

28 Sep 08:32
dd53a5d

Choose a tag to compare

Common

  • Added a new olp::client::EqualJitterBackdownStrategy backdown strategy. You can use it to define the waiting time between retries in olp::client::RetrySettings.
  • Changed the open behavior for the protected cache. Now, it tries to open the cache in the r/w mode if it has enough filesystem permissions, and the user did not explicitly instruct to open the cache in the r/o mode via olp::cache::CacheSettings::openOptions.
  • Changed the olp::cache::DefaultCache::Open method. Now, it returns olp::cache::DefaultCache::StorageOpenResult::ProtectedCacheCorrupted if you try to open a broken database, specifically more than 4 L0 levelDB storage files, and you need to compact the database manually before you try to open it again.
  • Added a bool operator to the olp::client::ApiResponse class, which is a shortcut for olp::client::ApiResponse::IsSuccessful(). Use this operator to check whether your response was successful.
  • Removed the arbitrary 2-second delay on shutdown inside NetworkAndroid.cpp, which implements the abstract olp::http::Network interface for the Android platform.
  • Modified the olp::client::OlpClient request. Previously, if the authentication request failed for any reason, and the token provider returned an empty token string, data requests were still sent with an empty token that failed with a 401 status. Now, the olp::client::OlpClient request is not sent if the bearer token is empty.
  • Fixed the wrong reset of the olp::http::NetworkWinHttp request after an error.
  • Fixed the compilation of the olp::utils::Dir class when compiled with enabled Unicode Character Set on Windows.
  • Fixed the olp::Dir::FileExist() method when compiled on Windows. Instead of checking the FILE_ATTRIBUTE_NORMAL attribute, it now checks that the attributes are unequal to INVALID_FILE_ATTRIBUTES to assume a file is present on the filesystem.

olp-cpp-sdk-authentication

  • Improved usage of local and server time. When the local time is off, and the backend returns a wrong timestamp error, the server time is parsed from the Date response header field. Additionally, the server time is incremented locally between retries by adding the time elapsed between a request and response.
  • Set the authentication component APIs to use server time if the use_system_time option is set to false.

olp-cpp-sdk-dataservice-read

  • Removed the request repetition that occurred when the same blob request returned an error while multiple threads were waiting for the blob. Now, the returned error is shared with all waiting threads.

v1.12.0

03 Jun 11:03
06839dc

Choose a tag to compare

Common

  • Changed the olp::cache::DiskCache implementation. Now, it passes the provided olp::cache::CacheSettings::enforce_immediate_flush flag to leveldb::WriteOptions::sync.
  • Added a new CMake option: OLP_SDK_ENABLE_DEFAULT_CACHE. The flag disables the LevelDB and Snappy dependencies and the default cache implementation. The olp::cache::KeyValueCache interface is still available for the user to implement his cache.
  • Added a new custom LevelDB environment implementation. It overrides the random access file API disabling the excessive memory mapping, which led to huge memory spikes on mobile platforms.
  • Changed the cache olp::cache::DefaultCache::Remove and olp::cache::DefaultCache::RemoveKeysWithPrefix APIs to consider protected keys, which means that the keys and values are not removed when protected.
  • Fixed the crash that occurred inside olp::cache::DefaultCache::Compact when there was no disk cache present.
  • Fixed the race condition in iOS networking. The race condition caused a rare crash during concurrent access to urlSessions in the createTaskWithProxy:andId: method inside OLPHttpClient.mm.
  • Work In Progress Added the olp::cache::DefaultCache::StorageOpenResult::ProtectedCacheCorrupted status. It is returned by olp::cache::DefaultCache::Open() when the protected cache fails to open.
  • Fixed the issue that occurred when provided olp::cache::OpenOptions in olp::cache::CacheSettings were ignored by the mutable cache.
  • Changed the log level of a few repetitive and unimportant log messages from INFO to DEBUG.
  • Broke the cycling dependency in the Android network implementation HttpClient.java.
  • Extended the olp::client::DefaultRetryCondition to consider IO_ERROR, OFFLINE_ERROR, TIMEOUT_ERROR, NETWORK_OVERLOAD_ERROR errors returned by the network layer upon send as retriable.
  • Changed the size estimation routine for the mutable cache. In a scenario when the max_disk_storage is not set, we get the cache size from leveldb::DB::GetApproximateSize instead of traversing the whole database.
  • Fixed the cache opening sequence. Now, when the mutable cache fails to open - the error is returned.
  • Added handling of the NSURLErrorDataNotAllowed error on iOS as OFFLINE_ERROR.
  • Added handling of the NSURLErrorNetworkConnectionLost error on iOS as IO_ERROR.

olp-cpp-sdk-authentication

  • Fixed the usage of the same nonce for authentication retry requests. Now, all authentication requests generate a new unique nonce.
  • Work In Progress Added the SignInApple API. Use it to sign in to the HERE platform with Apple ID.

olp-cpp-sdk-dataservice-read

  • Reduced quadtree index requests in the olp::dataservice::read::VersionedLayerClient::PrefetchTiles and olp::dataservice::read::VolatileLayerClient::PrefetchTiles APIs.
  • Added merging for the exact concurrent quadtree index requests in the olp::dataservice::read::VersionedLayerClient::PrefetchTiles and olp::dataservice::read::VolatileLayerClient::PrefetchTiles APIs.
  • Added a new API to olp::dataservice::read::VersionedLayerClient::Protect and olp::dataservice::read::VersionedLayerClient::Release for partitions. It works the same way as the API for tiles.
  • Added the olp::dataservice::read::repository::NamedMutexStorage class. It is designed to store olp::dataservice::read::repository::NamedMutex instances. It helps to eliminate global static variables.
  • Added the olp::client::ErrorCode::CacheIO error. The error occurs when the cache fails to store the download data. It is implemented only for the olp::dataservice::read::VersionedLayerClient::PrefetchTiles and olp::dataservice::read::VolatileLayerClient::PrefetchPartitions APIs.

v1.11.0

08 Feb 15:54
7d98fad

Choose a tag to compare

Common

  • Added API to the olp::cache::DefaultCache to get or set the size of the mutable cache. Now you can increase or decrease the disk cache size during runtime. Please note that when setting a smaller size then the current size, the eviction of data will be triggered which can take some time.
  • Added API to the olp::cache::DefaultCache to get size of protected cache.
  • Fixed incorrect olp::thread::ThreadedTaskScheduler behaviour to copy tasks instead of moving them.
  • Fixed the incorrect reset of the olp::client::CancelationContext in the olp::client::TaskContext that could lead to resource leaking and unexpected network requests cancelation.
  • Updated the lookup API endpoint for here-dev partitions from in.here.com to sit.here.com.

olp-cpp-sdk-dataservice-read

  • Fixed the data races inside prefetch operation that could lead to double callback or no callback at all.
  • Fixed prefetch cancelation behavior for both olp::dataservice::read::VersionedLayerClient and olp::dataservice::read::VolatileLayerClient. When canceled before this fix user will not know the status for each tile, in particular, that were canceled and only received the status for the tiles which succeeded or which failed with an arbitrary error.