Skip to content

Releases: heremaps/here-data-sdk-cpp

v1.6.0

05 May 08:54
eb3c215
Compare
Choose a tag to compare

Common

  • Added the LRU functionality to the mutable disk cache. LRU is enabled by default. You can disable it using eviction_policy in CacheSettings.
  • 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_API export 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_time flag to olp::authentication::Settings. You can use it when retrieving tokens to tell olp::authentication::TokenProvider to work with the system time instead of the server time.
  • Added the olp::authentication::AuthenticationClient::Authorize method. You can use it to collect all permissions associated with the authenticated user or application.
  • olp::authentication::TokenProvider now uses the pimpl idiom. Now, when you copy an instance of this class, it does not create a new request.
  • Deprecated the olp::authentication:AutoRefreshingToken class. It will be removed by 10.2020.
  • Breaking Change Removed the deprecated constructor of the AuthenticationClient class and the following deprecated methods: SetNetworkProxySettings, SetNetwork, and SetTaskScheduler.
  • The deprecation of the olp::authentication::TokenEndpoint and olp::authentication::TokenRequest classes is extended until 10.2020.

olp-cpp-sdk-dataservice-read

  • Optimized memory overhead for prefetch.
  • Removed the ambiguous PrefetchTilesRequest::WithTileKeys method that takes an rvalue reference.

v1.5.0

07 Apr 14:15
e32bbe0
Compare
Choose a tag to compare

Common

  • Moved the DefaultCache implementation to pimpl.
  • Fixed various compiler warnings.
  • CMake now uses the official Boost Github repository instead of downloading and unpacking the archive.
  • Method OlpClientSettingsFactory::CreateDefaultCache now returns nullptr if 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_time flag to olp::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 RemoveFromCache method to VolatileLayerClient. Now, you can remove specific partitions or tiles from the mutable cache.
  • Added a new PrefetchTiles method to VolatileLayerClient. Now, you can prefetch volatile tiles in the same way as versioned tiles.

v1.4.0

24 Mar 15:19
cee5476
Compare
Choose a tag to compare

Common

  • Breaking Change Removed the deprecated disk_path property. Use the disk_path_mutable property instead.
  • The DefaultCache constructor is now explicit and takes CacheSettings by value.
  • Fixed data that was not validated during reading from LevelDB when the olp::cache::OpenOptions::CheckCrc property was provided.
  • Various improvements in olp::http::NetworkCurl implementation. Some legacy features were removed.
  • Added the SetDefaultHeaders method to olp::http::Network. Now, you can set default HTTP headers for each request made by Network. 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::SignInClient method.

olp-cpp-sdk-dataservice-read

  • Added the RemoveFromCache method to VersionedLayerClient. Now, you can remove specific partitions or tiles from the mutable cache.
  • VersionedLayerClient now triggers an error when the request is passed with FetchOption::CacheWithUpdate. It makes no sense to update data when it is available in a cache for VersionedLayerClient since the version is locked.
  • Now, when you pass a request to VersionedLayerClient or VolatileLayerClient with FetchOption::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::CreateDefaultCache method. It will be removed by 06.2020.

v1.3.0

10 Mar 12:35
e743509
Compare
Choose a tag to compare

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 is olp::client::ExponentialBackdownStrategy that restricts the maximum wait time during failed retries of network requests in the olp::network::client::OlpClient class (both synchronous and asynchronous versions). The accumulated wait time during retries should not be longer than the RetrySettings.timeout property.
  • Added curl_global_init() and curl_global_cleanup() to the olp::http::NetworkCurl class (Linux default implementation).
    For more information, see the olp::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::OlpClient class 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::AuthenticationClient that 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::AuthenticationClient constructor using olp::authentication::AuthenticationSettings to 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::PartitionsRequest now supports a list of partition IDs. This way, when you use olp::dataservice::read::VersionedLayerClient and olp::dataservice::read::VolatileLayerClient, you can also request certain partitions instead of the entire layer metadata.
  • Added the Seek method to olp::dataservice::read::StreamLayerClient. This method can be used to start reading messages from a stream layer at any given position.
  • Added the Poll method to olp::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::TileRequest class and corresponding GetData overload to olp::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 subsequent GetData calls.
  • Added additional fields to the olp::dataservice::read::PartitionsRequest class. Now, you can access the following additional metadata
    fields: data size, compressed data size, checksum, and CRC.
  • Deprecated the WithVersion and the GetVersion methods in the olp::dataservice::read::DataRequest, olp::dataservice::read::PartitionsRequest and olp::dataservice::read::PrefetchTilesRequest classes. olp::dataservice::read::VersionedLayerClient now 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.

v1.2.0

04 Feb 12:28
265a5f8
Compare
Choose a tag to compare

v1.2.0 (04/02/2020)

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 ErrorCodeToString function to olp/core/http/NetworkTypes.h.
  • Improved the olp::http::NetworkCurl logging.
  • Changed the IsNull function in the olp::client::HRN class to handle realms according to platform changes.
  • Added the bool operator to the olp::client::HRN class. You can now use the operator to check whether all the service type fields in the olp::client::HRN class are not empty.
  • Fixed a possible data race in the olp::client::Condition class.
  • Added the MoveResult method to the olp::client::ApiResponse class. 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 the AuthenticationCredentials class, you can use the credentials.properties file that is provided by the platform.
  • Deprecated the olp::authentication::TokenEndpoint class. It will be removed by 04.2020.
  • Deprecated the olp::authentication::TokenRequest class. 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, and olp::dataservice::read::BlobApi classes are now blocking and use the new synchronous CallApi method in OlpClient.
  • The GetData method of the versioned and volatile layer now triggers the olp::client::ErrorCode::PreconditionFailed error 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::StreamLayerClient to use olp::thread::TaskScheduler for asynchronous operations instead of network threads.
  • Removed the unused olp::dataservice::write::ThreadSafeQueue class.
  • Deprecated the CancelAll methods in all layers. Use the CancelPendingRequests methods instead.

v1.1.0

11 Dec 13:20
Compare
Choose a tag to compare

v1.1.0 (11/12/2019)

Common

  • The deprecated olp::client::CancellationToken::cancel() method was removed. Use olp::client::CancellationToken::Cancel() instead.
  • The curl network implementation was fixed and can now compile on 32 bits architecture.
  • The disk_path field in olp::cache::CacheSettings is deprecated. Use the disk_path_mutable field instead.
  • A new synchronous CallApi method was added to olp::client::OlpClient.
  • pipe and pipe2 symbols detection are enhanced in curl.cmake.

olp-cpp-sdk-authentication

  • The SignInClient method in olp::authentication::AuthenticationClient is deprecated in favor of the newly introduced SignInClient method with a different signature.
  • The scope support was added to OAuth2 through olp::authentication::SignInProperties. You can now access the project bound resources using the olp::authentication::SignInProperties::scope field.
  • The error_id field was added to the ErrorResponse structure. You can use it to get the errorId string from the authentication error response.

olp-cpp-sdk-dataservice-read

  • The deprecated GetCatalogMetadataVersion method was removed from the olp::dataservice::read::CatalogClient.

olp-cpp-sdk-dataservice-write

  • Legacy and unused code were removed.

v1.0.0

03 Dec 10:17
Compare
Choose a tag to compare

Common

  • A new CMake flag OLP_SDK_BOOST_THROW_EXCEPTION_EXTERNAL was introduced to compile the SDK without exceptions. The user needs to provide the custom boost::throw_exception function.
  • olp::client::HttpResponse now holds std::stringstream instead of std::string. This removes expensive copies.
  • The CMake minimum version increased to 3.9.
  • The cancel method in CancellationToken is deprecated in favor of the newly introduced Cancel method.
  • 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::Send method returns olp::http::ErrorCode::NETWORK_OVERLOAD_ERROR, and client users receive olp::client::ErrorCode::SlowDown as a response.
  • Android network client can now be used when Java VM is embedded in a native application.

olp-cpp-sdk-dataservice-read

  • The VersionedLayerClient and VolatileLayerClient classes are now movable and non-copyable.
  • The TaskContext and PendingRequests classes moved to the core component, and are now public.
  • The GetCatalogMetadataVersion method in CatalogClient is deprecated. The GetLatestVersion method 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 by VersionedLayerClient::PrefetchTiles(). If not provided, the latest catalog version is queried from OLP instead.

olp-cpp-sdk-dataservice-write

  • Missing DATASERVICE_WRITE_API was added to various classes.

v0.8.0-beta

31 Oct 10:36
Compare
Choose a tag to compare

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_DEPRECATED macro is added to deprecate API.
  • Breaking Change SendOutcome::IsSuccessful typo fixed.
  • Missing dependencies for the iOS build as a shared library added.
  • KeyValueCache instance was added to OlpClientSetting.
  • Boost download source was changed.
  • Added Condition class 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::Settings requires olp::authentication::AuthenticationCredentials.

olp-cpp-sdk-dataservice-read

  • Added new class VersionedLayerClient that is used to access versioned layers in OLP. Class implements GetData, GetPartitions, PrefetchTiles methods from CatalogClient.
  • Added new class VolatileLayerClient that is used to access volatile layers in OLP. Class implements GetPartitions, GetData methods from CatalogClient.
  • GetData, GetPartitions, PrefetchTiles methods in CatalogClient deprecated.
  • Breaking Change CatalogClient constructor changed. OlpClientSettings must be passed by value, KeyValueCache is now part of OlpClientSettings.
  • Moved all responses and callbacks aliases to Types.h.

olp-cpp-sdk-dataservice-write

  • StreamLayerClientSettings class introduced.
  • Breaking Change StreamLayerClient constructor changed.
  • Breaking Change StreamLayerClient::Flush changed. Now taking FlushRequest as input and a FlushCallback to be triggered after the flush.
  • Breaking Change StreamLayerClient::Enable, StreamLayerClient::Disable removed.
  • VersionedLayerClient::CancelAll added, used to cancel all current running requests.
  • [CMake] Definition to export symbols added when the component is built as a shared library.
  • VolatileLayerClient, VersionedLayerClient, IndexLayerClient now cancel pending requests when destroyed.

v0.7.0-beta

09 Sep 14:54
Compare
Choose a tag to compare

Common

  • Introduced new abstract olp::thread::TaskScheduler to be used for async context; provided default thread pool implementation.
  • Added UserAgent HTTP header to mark all triggered requests.
  • Added China Lookup API URLs.
  • Introduced new HTTP abstraction layer olp::http::Network without singleton usage. Platform dependent implementations adapted and aligned with coding style.
  • olp::network::Network with according implementations and helper classes removed.
  • Changed olp::client::CancellationContext to shared pimpl so we can remove the std::shared_ptr wrapper 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::thread and switched to olp::thread::TaskScheduler. If the olp::thread::TaskScheduler instance 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::thread and switched to olp::thread::TaskScheduler. If the olp::thread::TaskScheduler instance 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::StreamLayerClient uses new olp::thread::TaskScheduler as input parameter for async context. If the olp::thread::TaskScheduler instance is not provided, all tasks are executed in the calling thread.

v0.6.0-beta

03 Jul 13:59
Compare
Choose a tag to compare

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