Common
- Added CMake option
OLP_SDK_USE_STD_OPTIONALto enforcestd::optionalfor C++17 and above instead ofboost::optional. - Added CMake option
OLP_SDK_USE_STD_ANYto enforcestd::anyfor C++17 and above instead ofboost::any. - Migrated from
boost::optionaltoolp::porting::optionalthroughout the codebase. - Migrated from
boost::any_casttoolp::porting::any_castthroughout the codebase. - Added missing headers for compatibility with newer compilers.
- Fixed compatibility issues with older Boost versions.
olp-cpp-sdk-authentication
- Added support for custom request body
olp::authentication::AuthenticationClient::SignInProperties::custom_bodyto be sent to authentication endpoint URL from credentials.
olp-cpp-sdk-core
- Added censoring API
olp::logging::Log::addCensorto mask sensitive values from log messages at runtime. - Added optional diagnostic output to the network layer with
olp::http::NetworkInitializationSettings::diagnostic_output_path. - Added
olp::cache::KeyValueCache::ListKeys()method to list keys available in the cache. - Use standard version of
shared_lockfor C++14. - Added implementation for
olp::geo::GeoRectangleoperators==and!=. - Fixed thread safety and lifetime issues in the network layer implementations.
- Removed custom certificate handling in iOS network implementation due to deprecated API usage and transient errors.
- Disabled cURL transfer encoding for old versions to prevent "TE" header issues in HTTP/2 (fixed in cURL 8.12.0).
- Fixed KeyGenerator to be always included in
olp-sdk-coreregardless ofOLP_SDK_ENABLE_DEFAULT_CACHEvalue. - Added ability to override Java version via
OLP_SDK_JAVA_TARGETfor Android builds to support newer Java compilers.
olp-cpp-sdk-core
- Remove enforcement of HTTP/2 for cURL-based network.
olp-cpp-sdk-core
- Fixed the data race in the initialization and possible wrong request cancellation for cURL-based network.
- Added the path tiling utilities that can be used to traverse and slice a
GetCoordinatessequence into tiles. - Increased the parallel connection limit to 32 for iOS network.
- Explicitly enabled support of HTTP/2 for Windows and cURL-based networks.
- iOS
Foundationlibrary is now explicitly linked toolp-cpp-sdk-core. - Extended logging for iOS network.
olp-cpp-sdk-dataservice-read
- Decreased log level for some messages.
- Decreased the amount of allocation in
QuadTreeIndexto improve performance.
Common
- Added a CMake check to prevent changing the C++ standard if it's already set.
- Changed the log severity on some messages to decrease log size.
- Fixed the Getting Started guide URL in README.md.
- Removed propagation of the -Werror build option from LevelDB to the parent projects if LevelDB is not installed.
- Updated the recommended Boost library version to 1.82. This version is downloaded and built if the library is not installed.
olp-cpp-sdk-authentication
- Added the optional
olp::http::authentication::Settings::scopefield. It is attached to token requests and can be used on the server side in the authentication process. - Fixed compilation issues with the latest Clang deployed on macOS.
olp-cpp-sdk-core
- Added the
OLP_SDK_DISABLE_LOCATION_LOGGINGCMake option. If enabled, log message locations are not generated by the compiler to create binaries with smaller sizes. - Added the
olp::client::ErrorCode::Offlineerror code to explicitly indicate the absence of network connectivity. - Added the
olp::http::HarCaptureAdapterclass to capture network requests and generate HAR files. - Added the
olp::http::NetworkWinHttp::ResultData::log_contextfield to facilitate request lifecycle debugging. - Added an optional
olp::http::NetworkResponse::diagnostics_field of theolp::http::Diagnosticstype to report timings of network request handlings. Used with cURL versions higher than 7.61. - Fixed the
olp::client::HttpResponsenetwork statistics handling while being copied. - Removed the
com.here.olp.network.HttpClient.Request.maxRetriesclass variable used in Android network implementation requests retries. The retries are expected to be implemented on the application level. - Removed the
olp::http::NetworkAndroid::ResetRequest(...)method used in Android network implementation requests retries. The retries are expected to be implemented on the application level.
olp-cpp-sdk-dataservice-read
- Added double-buffering to
olp::dataservice::read::repository::RapidJsonByteStreamto decrease single JSON processing time and reduce memory footprint size. - Fixed issues with the
compressedDataSizefield parsing by theolp::dataservice::read::repository::PartitionsSaxHandlerclass.
Common
- Removed deprecated
olp::client::OlpClient::SetSettings(...)method. Useolp::client::OlpClientconstructor instead. - Removed deprecated
olp::client::HttpResponse::statusfield. UseHttpResponse::GetStatus()method instead. - Removed deprecated
olp::client::HttpResponse::responsefield. UseHttpResponse::GetRawResponse()method instead. - Removed deprecated
olp::client::HttpResponse::headersfield. UseHttpResponse::GetHeaders()method instead.
olp-cpp-sdk-core
- Added
olp::client::HttpResponse::GetResponseAsBytesconvenience method to get the response body as a vector of unsigned chars. - Added
olp::client::HttpResponse::GetResponseAsStringconvenience method to get the response body content as a string. - Added
olp::client::HttpResponse::GetRawResponseconvenience method to get reference to the response object. - Added
olp::client::OlpClient::GetSettings()method. - Removed deprecated
olp::http::CreateDefaultNetwork(size_t)function. Useolp::http::CreateDefaultNetwork(NetworkInitializationSettings)instead. - Removed deprecated
olp::http::NetworkSettings::GetRetries()method. - Removed deprecated
olp::http::NetworkSettings::WithRetries()method. - Removed deprecated
olp::http::NetworkSettings::GetConnectionTimeout()method. UseNetworkSettings::GetConnectionTimeoutDuration()instead. - Removed deprecated
olp::http::NetworkSettings::WithConnectionTimeout(int)method. UseNetworkSettings::WithConnectionTimeout(std::chrono::milliseconds)instead. - Removed deprecated
olp::http::NetworkSettings::GetTransferTimeout()method. UseNetworkSettings::GetTransferTimeoutDuration()instead. - Removed deprecated
olp::http::NetworkSettings::WithTransferTimeout(int)method. UseNetworkSettings::WithTransferTimeout(std::chrono::milliseconds)instead. - Removed deprecated
olp::utils::Dir::exists(const std::string&)method. UseDir::Exists(...)instead. - Removed deprecated
olp::utils::Dir::remove(const std::string&)method. UseDir::Remove(...)instead. - Removed deprecated
olp::utils::Dir::create(const std::string&)method. UseDir::Create(...)instead. - Changed cURL network implementation requirements. OpenSSL is mandatory now.
- Fixed asynchronous access to the list of cancelled tasks in the iOS background mode.
- Fixed deleting cancelled invalid download tasks in the iOS background mode.
- Fixed crashes in
olp::cache::DiskCache::Size()method that happened when it's called on closed cache. - Fixed
olp::math::AlignedBoxtemplate compilation in certain environments. - Improved error handling on iOS.
NSURLErrorSecureConnectionFailed,NSURLErrorCannotFindHost,NSURLErrorDNSLookupFailedandNSURLErrorResourceUnavailableare retriable now. - Improved the iOS background download mode change. No additional actions performed when requested mode is already active.
- Improved cURL certificates configuration. Now, every field can be set up independently.
Common
- Fixed various clang-tidy warnings.
- Fixed Boost configuration error on Windows.
olp-cpp-sdk-dataservice-read
- Updated query network requests to include metadata fields
crc,checksum,dataSizeandcompressedDataSizeby default.
Common
- Updated links and filenames in the documentation.
- Improved the CI scripts and pipelines.
olp-cpp-sdk-authentication
- Fixed the
DateTimeparser to respect DST timezones on iOS. - Fixed the mechanism that determines the absolute path of the credentials file on new Windows versions, such as Windows 11.
olp-cpp-sdk-core
- Extended logging with
olp::logging::LogContextandolp::logging::ScopedLogContextto facilitate better management of logs. - Added logging contexts usage to the
olp::http::NetworkCurlclass. - Added a new error code
olp::client::ErrorCode::NoSpaceLeftto signal a shortage of available space on the target device. - Extended
olp::cache::KeyValueCacheandolp::cache::DefaultCachewith new methods:Read,Write,Delete, andDeleteByPrefixto allow propagation of actual operation errors. These methods correspond toPut,Get,Remove, andRemoveKeysWithPrefix, but returnolp::cache::OperationOutcome. - Extended
olp::client::OlpClientSettingswith a new settingpropagate_all_cache_errorsthat allows to enable the propagation of all cache errors. - Added a new way of serializing data to JSON, which outputs the result to a byte vector.
- Updated the logic to use a generated session ID for the background network session on iOS.
- Added support of Android-like build on desktops to allow running tests on host PCs.
- Fixed deprecation warnings related to C++17.
- Added background timeouts for iOS.
- Made CMake option
OLP_SDK_ENABLE_IOS_BACKGROUND_DOWNLOADusable only for iOS. - Added missing thread names for resource and time-intensive operations to help with profiling and debugging.
olp-cpp-sdk-dataservice-read
- Optimized memory allocations.
- Added a
DeleteFromCachemethod toolp::dataservice::read::VersionedLayerClientandolp::dataservice::read::VolatileLayerClientto allow the propagation of the actual operation error.
Common
- Added
Promoteto theolp::cache::KeyValueCacheAPI to explicitly promote the key in the LRU (Least Recently Used) cache. - Fixed the CMake configuration for MSVC build.
- Updated code snippets and documentation to reflect recent changes in the API.
olp-cpp-sdk-authentication
- Changed
olp::authentication::AuthenticationClientImpl::SignInClientto retry based on the configuration inolp::client::RetrySettingsinstead of returning an error immediately in case of transient errors. - Fixed parsing of server time returned in the response header when there are time zone differences.
olp-cpp-sdk-core
- Added
system_errorexplicitly to/olp/core/porting/shared_mutex.hto support GCC 13.2. - Changed
olp::http::NetworkCurlto log the location of the certificate used. - Changed
olp::client::HRN::ToString()andolp::client::HRN::ToCatalogHRNString()implementations to avoid streams. - Changed the
olp::http::Md5LookupGetBySubjectsignature to support OpenSSL v3.x.
olp-cpp-sdk-dataservice-read
- Decreased the number of memory reallocations for instances when only the tile keys are required by the caller.
Common
- Hotfix Updated
olp::cache::DefaultCache::Opento take into account various ways the cache path could be specified.
Common
- Updated the code to support the latest versions of popular compilers.
- Updated
olp::http::NetworkCurlclass to use 4x more opened connections than requests to avoid issues with connection caching. - Extended
olp::client::RetrySettingswithconnection_timeoutandtransfer_timeout. - Implemented performance improvements.
- Updated the minimal required version of
cURLfor SSL blob support to 7.77.0. - Added support for background downloads for iOS.
- Fixed possible data race in
olp::cache::DefaultCachewhen the cache size is being checked. - Added
OLP_SDK_ENABLE_OFFLINE_MODECMake option to enforce full offline mode for the SDK. - Changed
olp::cache::DiskCache::Opento returnolp::cache::OpenResult::Postponedwhen the protected can't be initialized at the given moment due to restrictions like missing permissions. - Changed
olp::cache::DefaultCache::Opento 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::PartitionsCacheRepositorythat occurred when the stream closed before parsing started. - Changed the
olp::dataservice::read::repository::PartitionsSaxHandlerto be cancellable. - Extended
olp::dataservice::read::VersionedLayerClientwithProtect(..)andRelease(..)methods to protect and release multiple partitions at once. - Added more checks for the results of cache-related operations.
- Updated
olp::dataservice::read::VersionedLayerClient::Releaseto take the list of tiles from the request into account and assume that they will be released. - Introduced performance improvements.
Common
- Improved support of HTTP proxy on iOS.
- Cleaned up DNS cache on error in cURL (Android).
- Updated
olp-cpp-sdk-core/CMakeLists.txtto include the externals include directory. - Added the possibility to specify DNS using
WithDNSServersto theolp::http::NetworkSettingsAPI. - Improved logging in
olp::client::PendingUrlRequests. - Added
CallApiStreamto theolp::client::OlpClientAPI that uses theSAXparser andJSONbyte stream to parse the layer partitions while they are downloading. - Fixed the
boostandrapidjsonincludes path resolution inolp-cpp-sdk-core/CMakeLists.txt. - Changed the log level to
WARNINGfor the error message when the max number ofHTTPrequests has been reached inolp::http::OLPNetworkIOS::Send. - Added a status code for failed
HTTPrequests inolp::dataservice::read::repository::PrefetchTilesRepository. - Censored credentials in log messages for the network logs on the
DEBUGlog level. - Fixed the
rapidjsoninclude 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::PartitionsRepositoryAPI. - Added default copy and move constructors and operators to the
modelnamespace classes.
olp-cpp-sdk-dataservice-write
- Added default copy and move constructors and operators to the
modelnamespace classes.
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.
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.
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 cache in the Read-Write mode.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
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.
Common
- A new CMake flag
OLP_SDK_BOOST_THROW_EXCEPTION_EXTERNALwas introduced to compile the SDK without exceptions. The user needs to provide the customboost::throw_exceptionfunction. olp::client::HttpResponsenow holdsstd::stringstreaminstead ofstd::string. This removes expensive copies.- The CMake minimum version increased to 3.9.
- The
cancelmethod inCancellationTokenis deprecated in favor of the newly introducedCancelmethod. - Network logs improved for all platforms.
- Various bug fixes and improvements.
- The Network limit is now implemented for all platforms. When the limit is reached, the
Network::Sendmethod returnsolp::http::ErrorCode::NETWORK_OVERLOAD_ERROR, and client users receiveolp::client::ErrorCode::SlowDownas a response. - Android network client can now be used when Java VM is embedded in a native application.
olp-cpp-sdk-dataservice-read
- The
VersionedLayerClientandVolatileLayerClientclasses are now movable and non-copyable. - The
TaskContextandPendingRequestsclasses moved to the core component, and are now public. - The
GetCatalogMetadataVersionmethod inCatalogClientis deprecated. TheGetLatestVersionmethod should be used instead. - All deprecated methods marked in v0.8.0 are now removed.
- A new optional parameter for a catalog version was added to
PrefetchTileRequest. It is used byVersionedLayerClient::PrefetchTiles(). If not provided, the latest catalog version is queried from OLP instead.
olp-cpp-sdk-dataservice-write
- Missing
DATASERVICE_WRITE_APIwas added to various classes.
Common
- Project renamed to
here-olp-sdk-cpp. - Project structure was changed, functional, integration, performance tests introduced.
- Local OLP server that mimics OLP added.
OLP_SDK_DEPRECATEDmacro is added to deprecate API.- Breaking Change
SendOutcome::IsSuccessfultypo fixed. - Missing dependencies for the iOS build as a shared library added.
KeyValueCacheinstance was added toOlpClientSetting.- Boost download source was changed.
- Added
Conditionclass helping repositories sync wait on the OLP response. - Updated read example and documentation to reflect recent changes in API.
olp-cpp-sdk-authentication
- Breaking Change
olp::authentication::Settingsrequiresolp::authentication::AuthenticationCredentials.
olp-cpp-sdk-dataservice-read
- Added new class
VersionedLayerClientthat is used to access versioned layers in OLP. Class implementsGetData,GetPartitions,PrefetchTilesmethods fromCatalogClient. - Added new class
VolatileLayerClientthat is used to access volatile layers in OLP. Class implementsGetPartitions,GetDatamethods fromCatalogClient. GetData,GetPartitions,PrefetchTilesmethods inCatalogClientdeprecated.- Breaking Change CatalogClient constructor changed.
OlpClientSettingsmust be passed by value,KeyValueCacheis now part ofOlpClientSettings. - Moved all responses and callbacks aliases to
Types.h.
olp-cpp-sdk-dataservice-write
StreamLayerClientSettingsclass introduced.- Breaking Change
StreamLayerClientconstructor changed. - Breaking Change
StreamLayerClient::Flushchanged. Now takingFlushRequestas input and aFlushCallbackto be triggered after the flush. - Breaking Change
StreamLayerClient::Enable,StreamLayerClient::Disableremoved. VersionedLayerClient::CancelAlladded, used to cancel all current running requests.- [CMake] Definition to export symbols added when the component is built as a shared library.
VolatileLayerClient,VersionedLayerClient,IndexLayerClientnow cancel pending requests when destroyed.
Common
- Introduced new abstract
olp::thread::TaskSchedulerto be used for async context; provided default thread pool implementation. - Added
UserAgentHTTP header to mark all triggered requests. - Added China Lookup API URLs.
- Introduced new HTTP abstraction layer
olp::http::Networkwithout singleton usage. Platform dependent implementations adapted and aligned with coding style. olp::network::Networkwith according implementations and helper classes removed.- Changed
olp::client::CancellationContextto shared pimpl so we can remove thestd::shared_ptrwrapper when using it across multiple requests. - Improved logging in core components.
olp-edge-sdk-cpp-authentication
- Breaking Change - Use new HTTP layer as input parameter for all requests. This is a mandatory parameter and users must provide it.
- Breaking Change - Use new
olp::thread::TaskScheduler; provided as input parameter. - Removed usage of raw
std::threadand switched toolp::thread::TaskScheduler. If theolp::thread::TaskSchedulerinstance is not provided, all tasks are executed in the calling thread.
olp-edge-sdk-cpp-dataservice-read
- Breaking Change - Use new HTTP layer as input parameter for all requests. This is a mandatory parameter and users must provide it.
- Breaking Change - Use new
olp::thread::TaskScheduler; provided as input parameter. - Removed usage of raw
std::threadand switched toolp::thread::TaskScheduler. If theolp::thread::TaskSchedulerinstance is not provided, all tasks are executed in the calling thread. - Improved logging.
olp-edge-sdk-cpp-dataservice-write
- Breaking Change - Use new HTTP layer as input parameter for all requests. This is a mandatory parameter and users must provide it.
- Breaking Change -
olp::dataservice::write::StreamLayerClientuses newolp::thread::TaskScheduleras input parameter for async context. If theolp::thread::TaskSchedulerinstance is not provided, all tasks are executed in the calling thread.
Initial open source release as a work in progress beta.
Not all OLP features are implemented, API breaks very likely with following commits and releases.
olp-edge-sdk-cpp-authentication
- Sign up new user with e-mail and password.
- Sign up new user with Facebook, Google, ArcGIS credentials.
- Accept terms and log out user.
- AAA OAuth2 with registered user credentials.
olp-edge-sdk-cpp-dataservice-read
- Read from Catalog (configuration, layers).
- Read from Versioned Layer (partitions metadata, partition data).
- Read from Volatile Layer (partitions metadata, partition data).
- Cache results on disk for later use.
olp-edge-sdk-cpp-dataservice-write
- Write to Versioned Layer (initialize publication, upload data and metadata, submit publication).
- Write to Volatile Layer (initialize publication, upload metadata, submit publication, upload data).
- Write to Stream Layer (publish data, queue data for asyncronous publish, publish SDII messages, batch write).
- Write to Index Layer (publish index, delete index, update index).