Skip to content

Releases: heremaps/here-data-sdk-cpp

Release 1.18.0

Choose a tag to compare

@andrey-kashcheev andrey-kashcheev released this 06 Mar 14:35
1062239

Common

  • Updated the code to support the latest versions of popular compilers.
  • Updated olp::http::NetworkCurl class to use 4x more opened connections than requests to avoid issues with connection caching.
  • Extended olp::client::RetrySettings with connection_timeout and transfer_timeout.
  • Implemented performance improvements.
  • Updated the minimal required version of cURL for SSL blob support to 7.77.0.
  • Added support for background downloads for iOS.
  • Fixed possible data race in olp::cache::DefaultCache when the cache size is being checked.
  • Added OLP_SDK_ENABLE_OFFLINE_MODE CMake option to enforce full offline mode for the SDK.
  • Changed olp::cache::DiskCache::Open to return olp::cache::OpenResult::Postponed when the protected can't be initialized at the given moment due to restrictions like missing permissions.
  • Changed olp::cache::DefaultCache::Open to scan the cache path for unexpected directories and report them as errors.

olp-cpp-sdk-authentication

  • The credentials file is parsed correctly when it has unexpected line endings which can occur when copying the file between different operating systems.

olp-cpp-sdk-dataservice-read

  • Fixed possible crash in olp::dataservice::read::PartitionsCacheRepository that occurred when the stream closed before parsing started.
  • Changed the olp::dataservice::read::repository::PartitionsSaxHandler to be cancellable.
  • Extended olp::dataservice::read::VersionedLayerClient with Protect(..) and Release(..) methods to protect and release multiple partitions at once.
  • Added more checks for the results of cache-related operations.
  • Updated olp::dataservice::read::VersionedLayerClient::Release to take the list of tiles from the request into account and assume that they will be released.
  • Introduced performance improvements.

Release 1.17.0

Choose a tag to compare

@Smartkras Smartkras released this 11 Oct 13:17
939c55a

Common

  • Improved support of HTTP proxy on iOS.
  • Cleaned up DNS cache on error in cURL (Android).
  • Updated olp-cpp-sdk-core/CMakeLists.txt to include the externals include directory.
  • Added the possibility to specify DNS using WithDNSServers to the olp::http::NetworkSettings API.
  • Improved logging in olp::client::PendingUrlRequests.
  • Added CallApiStream to the olp::client::OlpClient API that uses the SAX parser and JSON byte stream to parse the layer partitions while they are downloading.
  • Fixed the boost and rapidjson includes path resolution in olp-cpp-sdk-core/CMakeLists.txt.
  • Changed the log level to WARNING for the error message when the max number of HTTP requests has been reached in olp::http::OLPNetworkIOS::Send.
  • Added a status code for failed HTTP requests in olp::dataservice::read::repository::PrefetchTilesRepository.
  • Censored credentials in log messages for the network logs on the DEBUG log level.
  • Fixed the rapidjson include directory.

olp-cpp-sdk-authentication

  • Added the ability to use a custom token endpoint URL from credentials in olp::authentication::Settings.

olp-cpp-sdk-dataservice-read

  • Added support of requests with more than 100 partitions in the olp::dataservice::read::repository::PartitionsRepository API.
  • Added default copy and move constructors and operators to the model namespace classes.

olp-cpp-sdk-dataservice-write

  • Added default copy and move constructors and operators to the model namespace classes.

Release 1.16.0

Choose a tag to compare

@rustam-gamidov-here rustam-gamidov-here released this 13 Jun 11:16
b6a9d77

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

Choose a tag to compare

@andrey-kashcheev andrey-kashcheev released this 13 Mar 16:55
1c7f006

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

Choose a tag to compare

@mykolamalik mykolamalik released this 19 Dec 16:07
8a609d0

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

Choose a tag to compare

@andrey-kashcheev andrey-kashcheev released this 04 Nov 16:56
bc616d5

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

Choose a tag to compare

@andescu andescu released this 16 Jun 12:06
a44d0ed

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

Choose a tag to compare

@andescu andescu released this 13 Jun 08:01
860a2c3

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

Choose a tag to compare

@mykhailo-kuchma mykhailo-kuchma released this 08 Feb 15:51
0296101

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

Choose a tag to compare

@kzvieriev kzvieriev released this 28 Sep 08:32
dd53a5d

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.