10Duke Scale C++ Client
Loading...
Searching...
No Matches
FluentHeartbeatBuilder.h
1#ifndef TENDUKE_SE_LICENSING_FLUENTHEARTBEATBUILDER_H
2#define TENDUKE_SE_LICENSING_FLUENTHEARTBEATBUILDER_H
3
4#include "../../Lease.h"
5#include "./LicenseHeartbeatArguments.h"
6
7#include <cstdint>
8#include <string>
9#include <utility>
10#include <vector>
11
12namespace tenduke { namespace se { namespace licensing {
13
14class LicensingClient;
15
20template <typename Builder>
22{
23public:
28 explicit FluentHeartbeatBuilder(std::string licenseKey)
29 : licenseKey(std::move(licenseKey))
30 {}
31
32public:
38 Builder & lease(const ::tenduke::se::licensing::Lease & lease)
39 {
40 return this->lease(lease.leaseId);
41 }
42
48 Builder & leases(const std::vector<::tenduke::se::licensing::Lease> & licenses)
49 {
50 for (auto const &leaseToHeartbeat : licenses) {
51 lease(leaseToHeartbeat);
52 }
53 return static_cast<Builder &>(*this);
54 }
55
62 Builder & lease(const std::string &leaseId)
63 {
64 return lease(leaseId, 1, false);
65 }
66
79 Builder & lease(
80 const std::string &leaseId,
81 std::int64_t usedQty,
82 bool treatAsIncrementalQty = false
83 ) {
84 arguments.emplace_back(
85 leaseId,
86 treatAsIncrementalQty,
87 usedQty
88 );
89 return static_cast<Builder &>(*this);
90 }
91
92protected:
94 const std::string licenseKey;
95
97 std::vector<::tenduke::se::licensing::LicenseHeartbeatArguments> arguments;
98};
99
100}}}
101
102#endif //TENDUKE_SE_LICENSING_FLUENTHEARTBEATBUILDER_H
Base for fluent builder of hearbeat parameters.
Definition FluentHeartbeatBuilder.h:22
FluentHeartbeatBuilder(std::string licenseKey)
Constructs new instance.
Definition FluentHeartbeatBuilder.h:28
Builder & lease(const std::string &leaseId)
Adds a lease id to heart beat.
Definition FluentHeartbeatBuilder.h:62
Builder & leases(const std::vector<::tenduke::se::licensing::Lease > &licenses)
Adds multiple leases to heartbeat.
Definition FluentHeartbeatBuilder.h:48
Builder & lease(const ::tenduke::se::licensing::Lease &lease)
Adds a lease to heartbeat.
Definition FluentHeartbeatBuilder.h:38
const std::string licenseKey
Licensekey.
Definition FluentHeartbeatBuilder.h:94
std::vector<::tenduke::se::licensing::LicenseHeartbeatArguments > arguments
The individual arguments.
Definition FluentHeartbeatBuilder.h:97
Builder & lease(const std::string &leaseId, std::int64_t usedQty, bool treatAsIncrementalQty=false)
Adds a lease id to heartbeat updating usage.
Definition FluentHeartbeatBuilder.h:79
Root for classes, functions and globals of 10Duke C++ Client.
Definition BackendConfiguration.h:7