LicenseSpring C++ SDK
Easily add Software Licensing to your application
License.h
Go to the documentation of this file.
1 #ifndef LS_LICENSE_H
2 #define LS_LICENSE_H
3 
4 #ifdef _MSC_VER
5 #pragma once
6 #pragma warning(push)
7 #pragma warning(disable : 4251)
8 #endif
9 
10 #include <vector>
11 #include <functional>
12 #include "LicenseType.h"
13 #include "CustomField.h"
14 #include "InstallationFile.h"
15 #include "LicenseID.h"
16 #include "LicenseFeature.h"
17 #include "DeviceVariable.h"
18 #include "Customer.h"
19 #include "ProductDetails.h"
20 #include "LicenseUser.h"
21 #include "Exceptions.h"
22 
23 #pragma push_macro("check") // Workaround for Unreal Engine
24 #undef check
25 
26 namespace LicenseSpring
27 {
30 using LicenseWatchdogCallback = std::function<void(const LicenseSpringException &ex)>;
31 
35 {
36 public:
37  using ptr_t = std::shared_ptr<License>;
38 
40  virtual ~License() {};
41 
44  virtual const LicenseID &id() const = 0;
45 
48  virtual const std::string &key() const = 0;
49 
52  virtual const std::string &user() const = 0;
53 
56  virtual const uint64_t serverId() const = 0;
57 
60  virtual LicenseType type() const = 0;
61 
65  virtual Customer owner() const = 0;
66 
71  virtual LicenseUser::ptr_t licenseUser() const = 0;
72 
77  virtual ProductDetails productDetails() const = 0;
78 
81  virtual std::string status() const = 0;
82 
85  virtual bool isActive() const = 0;
86 
89  virtual bool isEnabled() const = 0;
90 
93  virtual bool isValid() const = 0;
94 
97  virtual bool isTrial() const = 0;
98 
101  virtual bool isAirGapped() const = 0;
102 
106  virtual uint32_t policyId() const = 0;
107 
110  virtual bool isOfflineActivated() const = 0;
111 
115  virtual bool isVMAllowed() const = 0;
116 
119  virtual bool isFloating() const = 0;
120 
124  virtual bool isBorrowed() const = 0;
125 
129  virtual bool isSubscriptionGracePeriodStarted() const = 0;
130 
133  virtual bool isGracePeriodStarted() const = 0;
134 
137  virtual tm gracePeriodEndDateTime() const = 0;
138 
141  virtual tm gracePeriodEndDateTimeUTC() const = 0;
142 
145  virtual int gracePeriodHoursRemaining() const = 0;
146 
151  virtual uint32_t trialPeriod() const = 0;
152 
156  virtual uint32_t maxFloatingUsers() const = 0;
157 
163  virtual uint32_t floatingInUseCount() const = 0;
164 
167  virtual uint32_t floatingTimeout() const = 0;
168 
173  virtual const std::string &floatingClientId() const = 0;
174 
177  virtual tm validityPeriod() const = 0;
178 
181  virtual tm validityPeriodUtc() const = 0;
182 
186  virtual tm validityWithGracePeriod() const = 0;
187 
191  virtual tm validityWithGracePeriodUtc() const = 0;
192 
196  virtual uint32_t subscriptionGracePeriod() const = 0;
197 
201  virtual uint32_t maxBorrowTime() const = 0;
202 
205  virtual tm maintenancePeriod() const = 0;
206 
209  virtual tm maintenancePeriodUtc() const = 0;
210 
213  virtual tm lastCheckDate() const = 0;
214 
217  virtual tm lastCheckDateUtc() const = 0;
218 
222  virtual tm floatingEndDateTime() const = 0;
223 
227  virtual tm floatingEndDateTimeUtc() const = 0;
228 
233  virtual const std::string &startDate() const = 0;
234 
237  virtual const std::string &metadata() const = 0;
238 
241  virtual const std::string &orderStoreId() const = 0;
242 
247  virtual LicenseFeature feature(const std::string &featureCode) const = 0;
248 
251  virtual std::vector<LicenseFeature> features() const = 0;
252 
255  virtual std::vector<CustomField> customFields() const = 0;
256 
260  virtual const std::vector<CustomField> &userData() const = 0;
261 
266  virtual std::string userData(const std::string &key) const = 0;
267 
276  virtual void addUserData(const CustomField &data, bool saveLicense = true) = 0;
277 
283  virtual void removeUserData(
284  const std::string &key = std::string(), bool saveLicense = true) = 0;
285 
288  virtual int32_t totalConsumption() const = 0;
289 
292  virtual int32_t maxConsumption() const = 0;
293 
297  virtual int32_t maxOverages() const = 0;
298 
301  virtual bool isOveragesAllowed() const = 0;
302 
305  virtual bool isUnlimitedConsumptionAllowed() const = 0;
306 
309  virtual bool isNegativeConsumptionAllowed() const = 0;
310 
313  virtual ConsumptionPeriod consumptionPeriod() const = 0;
314 
317  virtual bool isResetConsumptionEnabled() const = 0;
318 
321  virtual uint32_t timesActivated() const = 0;
322 
325  virtual uint32_t maxActivations() const = 0;
326 
329  virtual uint32_t transferCount() const = 0;
330 
334  virtual int32_t transferLimit() const = 0;
335 
338  virtual bool isDeviceTransferAllowed() const = 0;
339 
342  virtual bool isDeviceTransferLimited() const = 0;
343 
348  virtual bool isAutoReleaseSet() const = 0;
349 
353  virtual void setAutoRelease(bool autoRelease) = 0;
354 
361  virtual void updateConsumption(int32_t value = 1, bool saveLicense = true) = 0;
362 
370  virtual void updateFeatureConsumption(
371  const std::string &featureCode, int32_t value = 1, bool saveLicense = true) = 0;
372 
373  // Local checks
377  virtual bool isExpired() const = 0;
378 
382  virtual bool isMaintenancePeriodExpired() const = 0;
383 
387  virtual int daysRemainingUtc() const = 0;
388 
393  virtual int daysRemaining() const = 0;
394 
397  virtual int maintenanceDaysRemaining() const = 0;
398 
401  static const int MaxDaysRemainingValue;
402 
405  virtual int daysPassedSinceLastCheck() const = 0;
406 
417  virtual void localCheck(bool verifySignature = false) = 0;
418 
419  // Requests to LicenseSpring server
420 
437  virtual bool deactivate(bool removeLocalData = false) = 0;
438 
443  virtual bool changePassword(
444  const std::string &password, const std::string &newPassword) = 0; // may throw exceptions
445 
464  virtual InstallationFile::ptr_t check(const InstallFileFilter &filter = InstallFileFilter(),
465  bool includeExpiredFeatures = false) = 0;
466 
485  virtual bool syncConsumption(int32_t requestOverage = -1) = 0;
486 
506  virtual bool syncFeatureConsumption(const std::string &featureCode = std::string()) = 0;
507 
519  virtual void addDeviceVariable(
520  const std::string &name, const std::string &value, bool saveLicense = true) = 0;
521 
529  virtual void addDeviceVariable(const DeviceVariable &variable, bool saveLicense = true) = 0;
530 
534  virtual void addDeviceVariables(const std::vector<DeviceVariable> &variables) = 0;
535 
545  virtual bool sendDeviceVariables() = 0;
546 
557  virtual std::vector<DeviceVariable> getDeviceVariables(bool getFromBackend = false) = 0;
558 
562  virtual DeviceVariable deviceVariable(const std::string &name) const = 0;
563 
567  virtual const std::string &deviceVariableValue(const std::string &name) const = 0;
568 
576  virtual void setupLicenseWatchdog(LicenseWatchdogCallback callback, uint32_t timeout = 0) = 0;
577 
581  virtual void resumeLicenseWatchdog() = 0;
582 
585  virtual void stopLicenseWatchdog() = 0;
586 
593  virtual void setupFeatureWatchdog(LicenseWatchdogCallback callback, uint32_t timeout = 0) = 0;
594 
598  virtual void resumeFeatureWatchdog() = 0;
599 
602  virtual void stopFeatureWatchdog() = 0;
603 
610  virtual void registerFloatingLicense() = 0;
611 
622  virtual void releaseFloatingLicense(bool throwExceptions = false) = 0;
623 
637  virtual void borrow(uint32_t hours, uint32_t days = 0) = 0;
638 
652  virtual void borrow(const std::string &borrowEndDateTime = std::string()) = 0;
653 
659  virtual std::wstring deactivateOffline(
660  const std::wstring &deactivationRequestFile = std::wstring()) = 0;
661 
673  virtual bool updateOffline(const std::wstring &path, bool resetConsumption = false) = 0;
674 
681  virtual void unlinkFromDevice() = 0;
682 
686  virtual std::string getAirGapDeactivationCode(const std::string &initializationCode) = 0;
687 
692  virtual void deactivateAirGap(const std::string &confirmationCode) = 0;
693 
696  virtual bool isLicenseBelongsToThisDevice(DeviceIDAlgorithm deviceIDAlgorithm) = 0;
697 
699  virtual bool checkLicenseBelongsToThisDevice() = 0;
700 
707  virtual void registerFloatingFeature(
708  const std::string &featureCode, bool addToWatchdog = true) = 0;
709 
717  virtual void releaseFloatingFeature(const std::string &featureCode) = 0;
718 };
719 
722 std::string LS_API TmToString(
723  const tm &dateTime, const std::string &format = std::string("%d-%m-%Y"));
724 
725 } // namespace LicenseSpring
726 
727 #pragma pop_macro("check")
728 
729 #ifdef _MSC_VER
730 #pragma warning(pop)
731 #endif
732 
733 #endif // LS_LICENSE_H
LicenseSpring::License::MaxDaysRemainingValue
static const int MaxDaysRemainingValue
Maximum value for daysRemaining, e.g. in case of perpetual license.
Definition: License.h:401
LicenseSpring::InstallFileFilter
Helper struct for filtering installation files by environment and channel.
Definition: InstallationFile.h:18
LicenseID.h
LicenseSpring::LicenseFeature
Class that encapsulates information about license feature.
Definition: LicenseFeature.h:21
LicenseSpring::Customer
Class that encapsulates information about a customer.
Definition: Customer.h:17
LicenseSpring::LicenseUser::ptr_t
std::shared_ptr< LicenseUser > ptr_t
Definition: LicenseUser.h:21
LicenseSpring::LicenseID
Class that represents License identifier.
Definition: LicenseID.h:20
ProductDetails.h
LicenseSpring::DeviceVariable
Class for storing key-value device variable.
Definition: DeviceVariable.h:19
LicenseFeature.h
LicenseSpring::LicenseSpringException
Base class for all LicenseSpring exceptions.
Definition: Exceptions.h:18
LicenseSpring
Definition: BaseManager.h:16
LicenseSpring::ConsumptionPeriod
Class used for encapsulating LSConsumptionPeriod and converting cosumption period to/from string.
Definition: ConsumptionPeriod.h:11
DeviceIDAlgorithm
DeviceIDAlgorithm
Type of Device ID algorithm used by the SDK.
Definition: PODTypes.h:114
LicenseSpring::License::ptr_t
std::shared_ptr< License > ptr_t
Definition: License.h:37
LicenseType.h
LicenseUser.h
LS_API
#define LS_API
Definition: APIDef.h:23
LicenseSpring::LicenseType
Class used for encapsulating the type of license, comparing types of licenses, and converting them to...
Definition: LicenseType.h:19
LicenseSpring::License::~License
virtual ~License()
Destructor for license.
Definition: License.h:40
LicenseSpring::CustomField
Class for storing key-value data field.
Definition: CustomField.h:17
LicenseSpring::ProductDetails
Class that encapsulates information about a product.
Definition: ProductDetails.h:22
DeviceVariable.h
InstallationFile.h
CustomField.h
LicenseSpring::LicenseWatchdogCallback
std::function< void(const LicenseSpringException &ex)> LicenseWatchdogCallback
Callback function which being called in case of error in background thread (watchdog thread).
Definition: License.h:30
Exceptions.h
LicenseSpring::TmToString
std::string LS_API TmToString(const tm &dateTime, const std::string &format=std::string("%d-%m-%Y"))
Helper function, converts datetime to string using given format. See strftime reference for format de...
LicenseSpring::License
Class that encapsulates license information.
Definition: License.h:34
Customer.h
LicenseSpring::InstallationFile::ptr_t
std::shared_ptr< InstallationFile > ptr_t
Definition: InstallationFile.h:59