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).