Releases: heremaps/here-data-sdk-cpp
Releases · heremaps/here-data-sdk-cpp
Release 1.16.0
Common
- Added
olp::http::CertificateSettingsstruct to store custom certificate settings. - Added
olp::http::NetworkInitializationSettingsstruct containingolp::http::CertificateSettingsto be passed toolp::http::CreateDefaultNetwork(..). - Deprecated
olp::http::CreateDefaultNetwork(). It will be removed by 05.2024. Use addedolp::http::CreateDefaultNetwork(..)that takeolp::http::NetworkInitializationSettingsinstead. - Added
olp::client::CreateDefaultNetworkRequestHandler(..)that takeolp::http::NetworkInitializationSettingsas an argument. - Extended
olp::cache::CacheSettingswithextend_permissionsoption. - Extended
olp::http::NetworkSettingswithGetMaxConnectionLifetime()andWithMaxConnectionLifetime(..). - Deprecated
GetRetries()andWithRetries(..)inolp::http::NetworkSettings. They will be removed by 04.2024. - Extended
olp::http::NetworkSettingswithGetConnectionTimeoutDuration(),WithConnectionTimeout(std::chrono::milliseconds timeout),GetTransferTimeoutDuration()andWithTransferTimeout(std::chrono::milliseconds timeout). - Deprecated
GetConnectionTimeout(),WithConnectionTimeout(int timeout),GetTransferTimeout()andWithTransferTimeout(int timeout)inolp::http::NetworkSettings. They will be removed by 04.2024. Use methods that acceptstd::chrono::millisecondsinstead. - 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. Useclient::ApiErrorinstead. - Removed deprecated
olp::authentication::AuthenticationClient::SignInGoogle. - Removed deprecated
std::string olp::authentication::TokenProvider::operator()(). Use the operator withCancellationContextinstead. - Removed deprecated
olp::authentication::TokenResult::GetHttpStatus(). UseTokenResponse::GetError().GetHttpStatusCode()instead. - Removed deprecated
olp::authentication::TokenResult::GetErrorResponse(). UseTokenResponse::GetError().GetMessage()instead. - Removed deprecated
providerandcancelfromolp::authentication::AuthenticationSettings. Usetoken_providerinstead. - Used thread safe time formatting functions in AutoRefreshingToken.
Release 1.15.4
Common
- Changed the log level from
FATALtoERRORin case of errors during opening cache. - Changed network layer implementation based on cURL to handle certificates lookup.
- Improved documentation.
- Improved
olp::utils::Dir::Sizeto filter only files on Windows. - Added a limit of attempts for cache compaction.
- Added
libsslto the list of network libraries.
olp-cpp-sdk-dataservice-read
- Changed the log level of repetitive log messages from
INFOtoDEBUG.
Release 1.15.3
Common
- Fixed open behavior on the
No space lefterrors in the protected cache. Now, the cache will be opened in the Read-Only mode if theNo space lefterror occurs while opening the cache in the Read-Write mode.
Release 1.15.2
Common
- Extended
olp::client::ApiResponsewith 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_provideris set. - Fixed
olp::utils::Dir::Sizeto traverse through all nested directories.
olp-cpp-sdk-dataservice-read
- Extended
olp::dataservice::read::DataResponseandolp::dataservice::read::DataResponseCallbackwitholp::client::NetworkStatisticsas a payload. - Changed
olp::dataservice::read::repository::NamedMutexto 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::regexobject to local instead of the global one. The local object prevents getting thestd::bad_castexception on some compilers. - Improved documentation.
Release 1.15.1
Release 1.15.0
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. Theolp::client::OlpClient::CallApinow propagates the correct errors from theolp::authentication::TokenProvider. - Replaced usage of
std::stolwithstd::stollfor LRU expiration time evaluation. - The
olp::utils::Dir::IsReadOnlynow checks whether the target directory is present and returnsfalsein case it is missing. - Changed the initial permissions on the newly created directories with
olp::utils::Dir::Createfrom 0777 to 0774. - Added various performance optimizations for
olp::cache::DefaultCacheto speed upolp::cache::DefaultCache::Contains. - Improved various log messages.
olp-cpp-sdk-dataservice-read
- Added the
olp::dataservice::read::VersionedLayerClient::QuadTreeIndexAPI. Use this API to query the partitions for the specified tiles provided byolp::dataservice::read::TileRequest. - The
olp::dataservice::read::PartitionsCacheRepository::FindQuadTreenow 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::GetCatalognow forms correct URL when customolp::client::CatalogEndpointProvideris used. - Fixed the broken chain of cancellation contexts inside
olp::dataservice::read::VersionedLayerClient::PrefetchTilesmethod. 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_idfield to theolp::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
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
SSLExceptionerror to the Android implementation ofolp::http::Network. Now, the error is mapped toolp::http::ErrorCode::IO_ERRORand subsequently handled as a retriable error. - Added proper handling of the
NSURLErrorCannotConnectToHosterror to the iOS implementation ofolp::http::Network. Now, the error is mapped toolp::http::ErrorCode::IO_ERRORand subsequently handled as a retryable error. - Added the
olp::cache::KeyGeneratorclass. 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. Theolp::client::OlpClientclass handles all retries. - Changed logging from
stdouttostderrfor the POSIX environment. - Moved the commonly used internal
ExecuteOrSchedulemethod toTaskScheduler.h. - Work-in-progress: Added the
olp::thread::ExecutionContext,olp::thread::Continuation, andolp::thread::TaskContinuationclasses. 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::Base64EncodeAPI to suport the encoding of URLs. - Fixed various compiler warnings.
- Added a new CMake option:
OLP_SDK_USE_LIBCRYPTO. The flag disables thelibcryptodependency.
olp-cpp-sdk-authentication
- Added
olp::core::RetrySettingstoolp::authentication::AuthenticationSettings. Now, you can configureolp::authentication::AuthenticationClientto use the provided retry settings for all online requests. - Added a new operator to
olp::authentication::TokenProvider. It acceptsolp::client::CancelationContextas input and returnsolp::authentication::TokenResponse. Now, authentication requests can be cancelled, and clients can forward proper error messages during authentication to the caller. - Added a new
token_providerparameter toolp::client::AuthenticationSettings. The new token provider acceptsolp::client::CancelationContextand returns theolp::client::OauthTokenResponseresponse. Now, theolp::client::OlpClient::CallApicalls can be cancelled during authentication. - Deprecated the
olp::authentication::TokenProvider::operator()()method together with theolp::authentication::AuthenticationSettings::providermember. They will be removed by 10.2022. - Deprecated the
olp::authentication::TokenResult::GetHttpStatusandolp::authentication::TokenResult::GetErrorResponsemethods. 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::AuthenticationClientAPIs. Now, the correct error is returned. - Moved the deprecated
olp::authentication::AutoRefreshingToken,olp::authentication::TokenEndpoint, andolp::authentication::TokenRequestclasses from the public includes to the source. They are no longer available. - Added the
endpoint_urlvariable and a new constructor toolp::authentication::AuthenticationCredentials. - Switched the
SignUpHereUserandSignOutAPIs in theolp::authentication::AuthenticationClientfunctionality toTaskContext.
olp-cpp-sdk-dataservice-read
- Changed the
olp::dataservice-read::CatalogClient::GetLatestVersionAPI. Now, if you use theCacheOnlyfetch option and specify the cached and start versions, the latest version is resolved. The resolved version is stored in the cache. For theOnlineIfNotFoundfetch option, the online version is always requested and updated in the cache if needed. - Changed the default
olp::dataservice::read::CatalogVersionRequest::start_version_from0to-1as 0 is a valid catalog version while -1 is not. - Added the
olp::dataservice::read::CatalogClient::GetCompatibleVersionsAPI. Use it to query the available catalog versions that are compatible with the dependencies provided byolp::dataservice::read::CompatibleVersionsRequest.
olp-cpp-sdk-dataservice-write
- Improved Doxygen documentation in various places.
Release 1.13.0
Common
- Added a new
olp::client::EqualJitterBackdownStrategybackdown strategy. You can use it to define the waiting time between retries inolp::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::Openmethod. Now, it returnsolp::cache::DefaultCache::StorageOpenResult::ProtectedCacheCorruptedif 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::ApiResponseclass, which is a shortcut forolp::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 abstractolp::http::Networkinterface for the Android platform. - Modified the
olp::client::OlpClientrequest. 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, theolp::client::OlpClientrequest is not sent if the bearer token is empty. - Fixed the wrong reset of the
olp::http::NetworkWinHttprequest after an error. - Fixed the compilation of the
olp::utils::Dirclass when compiled with enabled Unicode Character Set on Windows. - Fixed the
olp::Dir::FileExist()method when compiled on Windows. Instead of checking theFILE_ATTRIBUTE_NORMALattribute, it now checks that the attributes are unequal toINVALID_FILE_ATTRIBUTESto 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
Dateresponse 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_timeoption is set tofalse.
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
Common
- Changed the
olp::cache::DiskCacheimplementation. Now, it passes the providedolp::cache::CacheSettings::enforce_immediate_flushflag toleveldb::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. Theolp::cache::KeyValueCacheinterface 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::Removeandolp::cache::DefaultCache::RemoveKeysWithPrefixAPIs 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::Compactwhen there was no disk cache present. - Fixed the race condition in iOS networking. The race condition caused a rare crash during concurrent access to
urlSessionsin thecreateTaskWithProxy:andId:method insideOLPHttpClient.mm. - Work In Progress Added the
olp::cache::DefaultCache::StorageOpenResult::ProtectedCacheCorruptedstatus. It is returned byolp::cache::DefaultCache::Open()when the protected cache fails to open. - Fixed the issue that occurred when provided
olp::cache::OpenOptionsinolp::cache::CacheSettingswere ignored by the mutable cache. - Changed the log level of a few repetitive and unimportant log messages from
INFOtoDEBUG. - Broke the cycling dependency in the Android network implementation
HttpClient.java. - Extended the
olp::client::DefaultRetryConditionto considerIO_ERROR,OFFLINE_ERROR,TIMEOUT_ERROR,NETWORK_OVERLOAD_ERRORerrors 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_storageis not set, we get the cache size fromleveldb::DB::GetApproximateSizeinstead 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
NSURLErrorDataNotAllowederror on iOS asOFFLINE_ERROR. - Added handling of the
NSURLErrorNetworkConnectionLosterror on iOS asIO_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
SignInAppleAPI. 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::PrefetchTilesandolp::dataservice::read::VolatileLayerClient::PrefetchTilesAPIs. - Added merging for the exact concurrent quadtree index requests in the
olp::dataservice::read::VersionedLayerClient::PrefetchTilesandolp::dataservice::read::VolatileLayerClient::PrefetchTilesAPIs. - Added a new API to
olp::dataservice::read::VersionedLayerClient::Protectandolp::dataservice::read::VersionedLayerClient::Releasefor partitions. It works the same way as the API for tiles. - Added the
olp::dataservice::read::repository::NamedMutexStorageclass. It is designed to storeolp::dataservice::read::repository::NamedMutexinstances. It helps to eliminate global static variables. - Added the
olp::client::ErrorCode::CacheIOerror. The error occurs when the cache fails to store the download data. It is implemented only for theolp::dataservice::read::VersionedLayerClient::PrefetchTilesandolp::dataservice::read::VolatileLayerClient::PrefetchPartitionsAPIs.
v1.11.0
Common
- Added API to the
olp::cache::DefaultCacheto 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::DefaultCacheto get size of protected cache. - Fixed incorrect
olp::thread::ThreadedTaskSchedulerbehaviour to copy tasks instead of moving them. - Fixed the incorrect reset of the
olp::client::CancelationContextin theolp::client::TaskContextthat could lead to resource leaking and unexpected network requests cancelation. - Updated the lookup API endpoint for
here-devpartitions fromin.here.comtosit.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::VersionedLayerClientandolp::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.