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 {
29  using LicenseWatchdogCallback = std::function<void( const LicenseSpringException& ex )>;
30 
34  {
35  public:
36  using ptr_t = std::shared_ptr<License>;
37 
39  virtual ~License() {};
40 
43  virtual const LicenseID& id() const = 0;
44 
47  virtual const std::string& key() const = 0;
48 
51  virtual const std::string& user() const = 0;
52 
55  virtual const uint64_t serverId() const = 0;
56 
59  virtual LicenseType type() const = 0;
60 
63  virtual Customer owner() const = 0;
64 
68  virtual LicenseUser::ptr_t licenseUser() const = 0;
69 
74  virtual ProductDetails productDetails() const = 0;
75 
78  virtual std::string status() const = 0;
79 
82  virtual bool isActive() const = 0;
83 
86  virtual bool isEnabled() const = 0;
87 
90  virtual bool isValid() const = 0;
91 
94  virtual bool isTrial() const = 0;
95 
98  virtual bool isAirGapped() const = 0;
99 
103  virtual uint32_t policyId() const = 0;
104 
107  virtual bool isOfflineActivated() const = 0;
108 
112  virtual bool isVMAllowed() const = 0;
113 
116  virtual bool isFloating() const = 0;
117 
121  virtual bool isBorrowed() const = 0;
122 
126  virtual bool isSubscriptionGracePeriodStarted() const = 0;
127 
130  virtual bool isGracePeriodStarted() const = 0;
131 
134  virtual tm gracePeriodEndDateTime() const = 0;
135 
138  virtual tm gracePeriodEndDateTimeUTC() const = 0;
139 
142  virtual int gracePeriodHoursRemaining() const = 0;
143 
147  virtual uint32_t trialPeriod() const = 0;
148 
152  virtual uint32_t maxFloatingUsers() const = 0;
153 
158  virtual uint32_t floatingInUseCount() const = 0;
159 
162  virtual uint32_t floatingTimeout() const = 0;
163 
167  virtual const std::string& floatingClientId() const = 0;
168 
171  virtual tm validityPeriod() const = 0;
172 
175  virtual tm validityPeriodUtc() const = 0;
176 
180  virtual tm validityWithGracePeriod() const = 0;
181 
185  virtual tm validityWithGracePeriodUtc() const = 0;
186 
190  virtual uint32_t subscriptionGracePeriod() const = 0;
191 
195  virtual uint32_t maxBorrowTime() const = 0;
196 
199  virtual tm maintenancePeriod() const = 0;
200 
203  virtual tm maintenancePeriodUtc() const = 0;
204 
207  virtual tm lastCheckDate() const = 0;
208 
211  virtual tm lastCheckDateUtc() const = 0;
212 
216  virtual tm floatingEndDateTime() const = 0;
217 
221  virtual tm floatingEndDateTimeUtc() const = 0;
222 
226  virtual const std::string& startDate() const = 0;
227 
230  virtual const std::string& metadata() const = 0;
231 
234  virtual const std::string& orderStoreId() const = 0;
235 
240  virtual LicenseFeature feature( const std::string& featureCode ) const = 0;
241 
244  virtual std::vector<LicenseFeature> features() const = 0;
245 
248  virtual std::vector<CustomField> customFields() const = 0;
249 
253  virtual const std::vector<CustomField>& userData() const = 0;
254 
259  virtual std::string userData( const std::string& key ) const = 0;
260 
266  virtual void addUserData( const CustomField& data, bool saveLicense = true ) = 0;
267 
271  virtual void removeUserData( const std::string& key = std::string(), bool saveLicense = true ) = 0;
272 
275  virtual int32_t totalConsumption() const = 0;
276 
279  virtual int32_t maxConsumption() const = 0;
280 
283  virtual int32_t maxOverages() const = 0;
284 
287  virtual bool isOveragesAllowed() const = 0;
288 
291  virtual bool isUnlimitedConsumptionAllowed() const = 0;
292 
295  virtual bool isNegativeConsumptionAllowed() const = 0;
296 
299  virtual ConsumptionPeriod consumptionPeriod() const = 0;
300 
303  virtual bool isResetConsumptionEnabled() const = 0;
304 
307  virtual uint32_t timesActivated() const = 0;
308 
311  virtual uint32_t maxActivations() const = 0;
312 
315  virtual uint32_t transferCount() const = 0;
316 
319  virtual int32_t transferLimit() const = 0;
320 
323  virtual bool isDeviceTransferAllowed() const = 0;
324 
327  virtual bool isDeviceTransferLimited() const = 0;
328 
332  virtual bool isAutoReleaseSet() const = 0;
333 
336  virtual void setAutoRelease( bool autoRelease ) = 0;
337 
343  virtual void updateConsumption( int32_t value = 1, bool saveLicense = true ) = 0;
344 
351  virtual void updateFeatureConsumption( const std::string& featureCode, int32_t value = 1, bool saveLicense = true ) = 0;
352 
353  // Local checks
357  virtual bool isExpired() const = 0;
358 
361  virtual bool isMaintenancePeriodExpired() const = 0;
362 
366  virtual int daysRemainingUtc() const = 0;
367 
371  virtual int daysRemaining() const = 0;
372 
375  virtual int maintenanceDaysRemaining() const = 0;
376 
379  static const int MaxDaysRemainingValue;
380 
383  virtual int daysPassedSinceLastCheck() const = 0;
384 
395  virtual void localCheck( bool verifySignature = false ) = 0;
396 
397  // Requests to LicenseSpring server
398 
412  virtual bool deactivate( bool removeLocalData = false ) = 0;
413 
418  virtual bool changePassword( const std::string& password, const std::string& newPassword ) = 0; // may throw exceptions
419 
433  virtual InstallationFile::ptr_t check( const InstallFileFilter& filter = InstallFileFilter(), bool includeExpiredFeatures = false ) = 0;
434 
448  virtual bool syncConsumption( int32_t requestOverage = -1 ) = 0;
449 
463  virtual bool syncFeatureConsumption( const std::string& featureCode = std::string() ) = 0;
464 
474  virtual void addDeviceVariable( const std::string& name, const std::string& value,
475  bool saveLicense = true ) = 0;
476 
483  virtual void addDeviceVariable( const DeviceVariable& variable, bool saveLicense = true ) = 0;
484 
488  virtual void addDeviceVariables( const std::vector<DeviceVariable>& variables ) = 0;
489 
497  virtual bool sendDeviceVariables() = 0;
498 
507  virtual std::vector<DeviceVariable> getDeviceVariables( bool getFromBackend = false ) = 0;
508 
512  virtual DeviceVariable deviceVariable( const std::string& name ) const = 0;
513 
517  virtual const std::string& deviceVariableValue( const std::string& name ) const = 0;
518 
524  virtual void setupLicenseWatchdog( LicenseWatchdogCallback callback, uint32_t timeout = 0 ) = 0;
525 
529  virtual void resumeLicenseWatchdog() = 0;
530 
533  virtual void stopLicenseWatchdog() = 0;
534 
539  virtual void setupFeatureWatchdog(LicenseWatchdogCallback callback, uint32_t timeout = 0 ) = 0;
540 
544  virtual void resumeFeatureWatchdog() = 0;
545 
548  virtual void stopFeatureWatchdog() = 0;
549 
555  virtual void registerFloatingLicense() = 0;
556 
565  virtual void releaseFloatingLicense( bool throwExceptions = false ) = 0;
566 
578  virtual void borrow( uint32_t hours, uint32_t days = 0 ) = 0;
579 
590  virtual void borrow( const std::string& borrowEndDateTime = std::string() ) = 0;
591 
595  virtual std::wstring deactivateOffline( const std::wstring& deactivationRequestFile = std::wstring() ) = 0;
596 
605  virtual bool updateOffline( const std::wstring& path, bool resetConsumption = false ) = 0;
606 
611  virtual void unlinkFromDevice() = 0;
612 
616  virtual std::string getAirGapDeactivationCode( const std::string& initializationCode ) = 0;
617 
621  virtual void deactivateAirGap( const std::string& confirmationCode ) = 0;
622 
625  virtual bool isLicenseBelongsToThisDevice( DeviceIDAlgorithm deviceIDAlgorithm ) = 0;
626 
628  virtual bool checkLicenseBelongsToThisDevice() = 0;
629 
635  virtual void registerFloatingFeature( const std::string& featureCode, bool addToWatchdog = true ) = 0;
636 
643  virtual void releaseFloatingFeature( const std::string& featureCode ) = 0;
644  };
645 
647  std::string LS_API TmToString( const tm& dateTime, const std::string& format = std::string( "%d-%m-%Y" ) );
648 
649 } // namespace LicenseSpring
650 
651 #pragma pop_macro("check")
652 
653 #ifdef _MSC_VER
654 #pragma warning( pop )
655 #endif
656 
657 #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:379
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:20
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:18
ProductDetails.h
LicenseSpring::DeviceVariable
Class for storing key-value device variable.
Definition: DeviceVariable.h:18
LicenseFeature.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:29
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:10
DeviceIDAlgorithm
DeviceIDAlgorithm
Type of Device ID algorithm used by the SDK.
Definition: PODTypes.h:107
LicenseSpring::License::ptr_t
std::shared_ptr< License > ptr_t
Definition: License.h:36
LicenseType.h
LicenseUser.h
LS_API
#define LS_API
Macros that expands to dllexport, dllimport or nothing on non Windows platforms or in case of static ...
Definition: APIDef.h:22
LicenseSpring::LicenseType
Class used for encapsulating the type of license, comparing types of licenses, and converting them to...
Definition: LicenseType.h:18
LicenseSpring::License::~License
virtual ~License()
Destructor for license.
Definition: License.h:39
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:20
DeviceVariable.h
InstallationFile.h
CustomField.h
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:33
Customer.h
LicenseSpring::InstallationFile::ptr_t
std::shared_ptr< InstallationFile > ptr_t
Definition: InstallationFile.h:54