10Duke Scale C++ Client
Loading...
Searching...
No Matches
HeartbeatRequest.h
1#ifndef TENDUKE_SE_LICENSING_HEARTBEATREQUEST_H
2#define TENDUKE_SE_LICENSING_HEARTBEATREQUEST_H
3
4#include "./BaseRequest.h"
5#include "./error_codes.h"
6
7namespace tenduke { namespace se { namespace licensing {
8
14template<class R>
16{
17
18public:
26 const std::shared_ptr<::tenduke::se::APIRequest<R>> &request,
27 const std::shared_ptr<::tenduke::se::licensing::MutableLeases> &leases,
28 const std::shared_ptr<::tenduke::oidc::OIDCSession> &oidc = nullptr
29 ) : BaseRequest<R>(request, leases, oidc)
30 {}
31
32protected:
33 void maintainLeases(const R &response) override
34 {
36
37 // Merge successfully heartbeat licenses to the cache (overwrite old leases with new ones)
38 BaseRequest<R>::leases->mergeLeases(response.leases);
39
40 // Remove failed heartbeats from the cache:
41 for (auto const &error : response.errors) {
42 if (::tenduke::se::licensing::errors::removeLeaseOnHeartbeatFailure(error.errorCode)) {
43 BaseRequest<R>::leases->removeLease(error.oldLeaseId);
44 }
45 }
46 }
47};
48
49}}}
50
51#endif //TENDUKE_SE_LICENSING_HEARTBEATREQUEST_H
HeartbeatRequest(const std::shared_ptr<::tenduke::se::APIRequest< R > > &request, const std::shared_ptr<::tenduke::se::licensing::MutableLeases > &leases, const std::shared_ptr<::tenduke::oidc::OIDCSession > &oidc=nullptr)
Constructs new instance.
Definition HeartbeatRequest.h:25
Interface for 10Duke Scale API-requests.
Definition APIRequest.h:12
High-level licensing client request.
Definition BaseRequest.h:24
const std::shared_ptr<::tenduke::se::licensing::MutableLeases > leases
The lease cache.
Definition BaseRequest.h:78
virtual void maintainLeases(const R &response)
Performs lease-cache maintenance.
Definition BaseRequest.h:72
BaseRequest(const std::shared_ptr<::tenduke::se::APIRequest< R > > &request, const std::shared_ptr<::tenduke::se::licensing::MutableLeases > &leases, const std::shared_ptr<::tenduke::oidc::OIDCSession > &oidc=nullptr)
Constructs new instance.
Definition BaseRequest.h:35
HeartbeatRequest(const std::shared_ptr<::tenduke::se::APIRequest< R > > &request, const std::shared_ptr<::tenduke::se::licensing::MutableLeases > &leases, const std::shared_ptr<::tenduke::oidc::OIDCSession > &oidc=nullptr)
Constructs new instance.
Definition HeartbeatRequest.h:25
void maintainLeases(const R &response) override
Performs lease-cache maintenance.
Definition HeartbeatRequest.h:33
Licensing operations for 10Duke Scale.
Definition LicenseConsumerClientBindingStatus.h:8
Classes, functions and globals of 10Duke Scale C++ Client.
Definition AbstractClientFactory.h:16
Root for classes, functions and globals of 10Duke C++ Client.
Definition AbstractClientFactory.h:16