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 theolp::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 theolp::client::HRN
class are not empty. - Fixed a possible data race in the
olp::client::Condition
class. - Added the
MoveResult
method to theolp::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 theAuthenticationCredentials
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
, andolp::dataservice::read::BlobApi
classes are now blocking and use the new synchronousCallApi
method inOlpClient
. - The
GetData
method of the versioned and volatile layer now triggers theolp::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 useolp::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 theCancelPendingRequests
methods instead.
Common
- The deprecated
olp::client::CancellationToken::cancel()
method was removed. Useolp::client::CancellationToken::Cancel()
instead. - The
curl
network implementation was fixed and can now compile on 32 bits architecture. - The
disk_path
field inolp::cache::CacheSettings
is deprecated. Use thedisk_path_mutable
field instead. - A new synchronous
CallApi
method was added toolp::client::OlpClient
. pipe
andpipe2
symbols detection are enhanced in curl.cmake.
olp-cpp-sdk-authentication
- The
SignInClient
method inolp::authentication::AuthenticationClient
is deprecated in favor of the newly introducedSignInClient
method with a different signature. - The
scope
support was added to OAuth2 througholp::authentication::SignInProperties
. You can now access the project bound resources using theolp::authentication::SignInProperties::scope
field. - The
error_id
field was added to theErrorResponse
structure. You can use it to get theerrorId
string from the authentication error response.
olp-cpp-sdk-dataservice-read
- The deprecated
GetCatalogMetadataVersion
method 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_EXTERNAL
was introduced to compile the SDK without exceptions. The user needs to provide the customboost::throw_exception
function. olp::client::HttpResponse
now holdsstd::stringstream
instead ofstd::string
. This removes expensive copies.- The CMake minimum version increased to 3.9.
- The
cancel
method inCancellationToken
is deprecated in favor of the newly introducedCancel
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 returnsolp::http::ErrorCode::NETWORK_OVERLOAD_ERROR
, and client users receiveolp::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
andVolatileLayerClient
classes are now movable and non-copyable. - The
TaskContext
andPendingRequests
classes moved to the core component, and are now public. - The
GetCatalogMetadataVersion
method inCatalogClient
is deprecated. TheGetLatestVersion
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 byVersionedLayerClient::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.
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 toOlpClientSetting
.- 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
requiresolp::authentication::AuthenticationCredentials
.
olp-cpp-sdk-dataservice-read
- Added new class
VersionedLayerClient
that is used to access versioned layers in OLP. Class implementsGetData
,GetPartitions
,PrefetchTiles
methods fromCatalogClient
. - Added new class
VolatileLayerClient
that is used to access volatile layers in OLP. Class implementsGetPartitions
,GetData
methods fromCatalogClient
. GetData
,GetPartitions
,PrefetchTiles
methods inCatalogClient
deprecated.- Breaking Change CatalogClient constructor changed.
OlpClientSettings
must be passed by value,KeyValueCache
is now part ofOlpClientSettings
. - 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 takingFlushRequest
as input and aFlushCallback
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.
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 thestd::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 toolp::thread::TaskScheduler
. If theolp::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 toolp::thread::TaskScheduler
. If theolp::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 newolp::thread::TaskScheduler
as input parameter for async context. If theolp::thread::TaskScheduler
instance 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).