cel_license.h

Go to the documentation of this file.
00001 //----------------------------------------------------------------------------
00004 //
00005 // (C) 2003-2006 Celartem Technology Inc. All rights reserved.
00006 //----------------------------------------------------------------------------
00007 
00008 #ifndef _cel_license_h_
00009 #define _cel_license_h_
00010 
00011 #include "cel_types.h"
00012 #include "cel_referable.h"
00013 #include "cel_lockable.h"
00014 #include "cel_memory.h"
00015 #include "cel_string.h"
00016 #include "cel_time.h"
00017 #include <map>
00018 
00019 namespace Celartem
00020 {
00025     namespace License
00026     {
00031         enum Feature
00032         {
00033             PixelLiveImaging = 0, 
00034             VFZEncode = 1, 
00035             MrSIDEncode = 2, 
00036             JPEG2000Encode = 3, 
00037             GenuineFractals = 4, 
00038             DjVuDecode = 5, 
00039             DjVuEncode = 6, 
00040             SecureDjVuDecode = 7, 
00041             SecureDjVuEncode = 8, 
00042             PerformOCR = 9, 
00043             Feature10, 
00044             Feature11, 
00045             Feature12, 
00046             Feature13, 
00047             Feature14, 
00048             Feature15, 
00049             Feature16, 
00050             Feature17, 
00051             Feature18, 
00052             Feature19, 
00053             Feature20, 
00054             Feature21, 
00055             Feature22, 
00056             Feature23, 
00057             Feature24, 
00058             Feature25, 
00059             Feature26, 
00060             Feature27, 
00061             Feature28, 
00062             Feature29, 
00063             Feature30, 
00064             Feature31, 
00065         };
00066         
00070         enum {MAX_FEATURES = 32};
00071         
00076         enum ActivationScheme
00077         {
00078             Disabled = 0, 
00079             Unlimited = 1, 
00080             ByCartridge = 2, 
00081             Development = 3, 
00082             ActivationServer = 4, 
00083         };
00084 
00085         struct ProductStatus;
00086 
00093         class LicenseManager
00094         {
00095         public:
00101             static LicenseManager& getLicenseManager();
00102             
00112             virtual void setLicenseScript(const String& inLicense) = 0;
00113             
00125             virtual void setLicenseTarget(void* target, const String& inCookie) = 0;
00126             
00132             virtual String getLicenseScript() const = 0;
00133             
00139             virtual String getProductId() const = 0;
00140             
00146             virtual String getProductDescription() const = 0;
00147 
00155             virtual ActivationScheme getActivationScheme(Feature inFeature) const = 0;
00156             
00162             virtual String getMachineId() const = 0;
00163             
00185             virtual String getStatusString(
00186                 bool inHumanReadable,
00187                 const String& inProductId = NullString) const = 0;
00188 
00203             static String getStatusStringFromProductStatus(
00204                 bool inHumanReadable,
00205                 const String& inMachineId,
00206                 const ProductStatus& inProductStatus);
00207             
00218             static String getProductStatusFromString(
00219                 const String& inStatusString,
00220                 ProductStatus& outProductStatus);
00221 
00227             virtual void setActivationServerUrl(
00228                 const String& inActivationServerUrl) = 0;
00229 
00235             virtual String getActivationServerUrl() const = 0;
00236 
00243             static String createLicenseScript(
00244                 const String& inUnencryptedScript);
00245             
00251             static String getFeatureName(Feature inFeature);
00252 
00253 #if CEL_ENV_POSIX
00254 
00261             static void setLicenseDbDirectory(
00262                 const String& inLicenseDbDirectory);
00263 #endif
00264 
00265         protected:
00266             virtual ~LicenseManager() {}
00267         };
00268         
00273         struct FeatureInfo
00274         {
00278             ActivationScheme actScheme;
00279             
00285             size_t count;
00286             
00294             size_t altCount;
00295             
00300             Time expiry;
00301             
00305             static const size_t ficUnlimited = 0xffffffff;
00306             
00310             FeatureInfo() : actScheme(Disabled), count(0), altCount(0) {}
00311         };
00312         
00316         struct ProductStatus
00317         {
00321             String productId;
00322             
00326             String productDescription;
00327             
00331             SimpleArray<FeatureInfo> featureStatus;
00332         };
00333         
00338         class CartridgeManager
00339         {
00340         public:
00347             static CartridgeManager& getCartridgeManager();
00348             
00355             virtual void getActivatedProducts(SimpleArray<String>& outProductIds) = 0;
00356             
00363             virtual void getProductStatus(
00364                 ProductStatus& outProductStatus,
00365                 const String& inProductId = NullString) = 0;
00366 
00379             virtual String reserve(Feature inFeature, size_t inCount) = 0;
00380             
00386             virtual void commit(const String& inGuid) = 0;
00387             
00393             virtual void revert(const String& inGuid) = 0;
00394             
00400             virtual void installCartridge(const String& inCartridgeScript) = 0;
00401 
00408             static String createCartridge(
00409                 const String& inUnencryptedScript);
00410             
00418             virtual void reinitializeDataBase() = 0;
00419 
00420         protected:
00421             virtual ~CartridgeManager() {}
00422         };
00423 
00428         class CartridgeConsumer
00429         {
00430         public:
00434             CartridgeConsumer();
00435             
00441             ~CartridgeConsumer();
00442             
00450             void reserve(Feature inFeature, size_t inCount);
00451             
00455             void commit();
00456             
00460             void revert();
00461         
00462         private:
00463             void* m_reserved;
00464         };
00465     }
00466 }
00467 
00468 #endif // _cel_license_h_

This document is automatically generated using doxygen 1.5.4 at Fri Jun 27 18:21:54 2008.