LicenseSpring C++ SDK  7.27.0
Easily add Software Licensing to your application
LicenseFileStorage.h
Go to the documentation of this file.
1 #ifndef LS_LICENSE_FILE_STORAGE_H
2 #define LS_LICENSE_FILE_STORAGE_H
3 
4 #ifdef _MSC_VER
5 #pragma once
6 #pragma warning( push )
7 #pragma warning( disable : 4251 )
8 #endif
9 
10 #include <mutex>
11 #include <string>
12 #include "LicenseStorage.h"
13 
14 namespace boost { namespace interprocess { class permissions; } }
15 
16 namespace LicenseSpring
17 {
21  {
22  public:
23  using ptr_t = std::shared_ptr<LicenseFileStorageBase>;
24 
28  static ptr_t create( const std::wstring& licensePath = std::wstring() );
29 
32  LicenseFileStorageBase( const std::wstring& licensePath = std::wstring() );
33 
36  void saveLicense( const std::string& data ) override;
37 
40  std::string loadLicense() override;
41 
43  void clear() override;
44 
47  void setLicenseFileName( const std::wstring& name );
48 
51  void setLicenseFolderPath( const std::wstring& path );
52 
56  const std::wstring& licenseFileName() const;
57 
60  const std::wstring& licenseFolderPath() const;
61 
64  std::wstring licenseFilePath() const;
65 
66  protected:
67  std::wstring m_folderPath;
68  std::wstring m_fileName;
69 
72  std::wstring prepareRead() const;
73 
77  std::wstring prepareWrite() const;
78 
82  std::string readLicense( const std::wstring& filePath ) const;
83 
87  void writeLicense( const std::wstring& filePath, const std::string& data ) const;
88  };
89 
90 
94  {
95  public:
96  using ptr_t = std::shared_ptr<LicenseFileStorage>;
97 
101  static ptr_t create( const std::wstring& licensePath = std::wstring() );
102 
105  LicenseFileStorage( const std::wstring& licensePath = std::wstring() );
106 
109  void saveLicense( const std::string& data ) override;
110 
113  std::string loadLicense() override;
114 
116  void clear() override;
117 
118  private:
119  std::mutex m_mutex;
120  };
121 
122 
127  {
128  public:
129  using ptr_t = std::shared_ptr<LicenseFileStorageEx>;
130 
135  static ptr_t create( const std::string& appName, const std::wstring& licensePath = std::wstring() );
136 
140  LicenseFileStorageEx( const std::string& appName, const std::wstring& licensePath = std::wstring() );
141 
144 
147  void saveLicense( const std::string& data ) override;
148 
151  std::string loadLicense() override;
152 
154  void clear() override;
155 
156  //-------- Named mutex management --------
157 
160  void setPermissionsUnix( int permissions );
161 
165  void setPermissionsWin( void* permissions );
166 
169 
173 
178  uint32_t lockTimeout() const;
179 
182  void setLockTimeout( uint32_t timeout );
183 
184  private:
185  std::string m_name;
186  uint32_t m_lockTimeout;
187  boost::interprocess::permissions* m_perm;
188  };
189 
190 
195  {
196  public:
197  using ptr_t = std::shared_ptr<FileStorageWithLock>;
198 
202  static ptr_t create( const std::wstring& licensePath = std::wstring() );
203 
206  FileStorageWithLock( const std::wstring& licensePath = std::wstring() );
207 
210  void saveLicense( const std::string& data ) override;
211 
214  std::string loadLicense() override;
215 
217  void clear() override;
218 
222  uint32_t attemptsCount() const;
223 
226  void setAttemptsCount( uint32_t count );
227 
231  uint32_t waitTimeout() const;
232 
235  void setWaitTimeout( uint32_t timeout );
236 
237  private:
238  uint32_t m_attemptsCount;
239  uint32_t m_waitTimeout;
240  };
241 } // namespace LicenseSpirng
242 
243 #ifdef _MSC_VER
244 #pragma warning( pop )
245 #endif
246 
247 #endif // LS_LICENSE_FILE_STORAGE_H
#define LS_API
Macros that expands to dllexport, dllimport or nothing on non Windows platforms or in case of static ...
Definition: APIDef.h:22
Class that saves license in a file, derived from LicenseFileStorageBase class.
void setAttemptsCount(uint32_t count)
Set file lock operation attempts count.
static ptr_t create(const std::wstring &licensePath=std::wstring())
Allocates and constructs a FileStorageWithLock object and passes args to FileStorageWithLock().
void setWaitTimeout(uint32_t timeout)
Set timeout in milliseconds between file lock attempts.
uint32_t waitTimeout() const
Get timeout in milliseconds between file lock attempts.
void clear() override
Removes local license file.
FileStorageWithLock(const std::wstring &licensePath=std::wstring())
FileStorageWithLock constructor.
void saveLicense(const std::string &data) override
Saves given license data string to the file.
std::string loadLicense() override
Load license from file.
uint32_t attemptsCount() const
Get file lock operation attempts count.
Base class that saves license in a file, implements ILicenseStorage interface.
static ptr_t create(const std::wstring &licensePath=std::wstring())
Allocates and constructs a LicenseFileStorageBase object and passes args to LicenseFileStorageBase().
void clear() override
Removes local license file.
std::string loadLicense() override
Load license from file.
std::string readLicense(const std::wstring &filePath) const
Reads license from file.
void setLicenseFileName(const std::wstring &name)
Setter for license filename with extension (optional). Default filename is License....
LicenseFileStorageBase(const std::wstring &licensePath=std::wstring())
Constructor for LicenseFileStorageBase object.
void saveLicense(const std::string &data) override
Saves given license data string to the file.
void setLicenseFolderPath(const std::wstring &path)
Setter for folder path where License file is being stored.
const std::wstring & licenseFileName() const
Getter for license filename with extension (optional).
std::wstring licenseFilePath() const
Getter for path to the license file.
std::shared_ptr< LicenseFileStorageBase > ptr_t
void writeLicense(const std::wstring &filePath, const std::string &data) const
Writes given license data string to the file.
const std::wstring & licenseFolderPath() const
Getter for folder path where License file is being stored.
std::wstring prepareWrite() const
Prepare to write license file.
std::wstring prepareRead() const
Prepare to read license file.
Class that saves license in a file, derived from LicenseFileStorageBase class.
void setLockTimeout(uint32_t timeout)
Set timeout in milliseconds for trylock.
void setPermissionsUnrestricted()
Sets permissions to unrestricted access: null DACL for windows or 0666 for UNIX.
void setPermissionsUnix(int permissions)
Set platform dependent permission (Unix like systems).
void saveLicense(const std::string &data) override
Saves given license data string to the file.
uint32_t lockTimeout() const
Get trylock timeout in milliseconds.
static ptr_t create(const std::string &appName, const std::wstring &licensePath=std::wstring())
Allocates and constructs a LicenseFileStorageEx object and passes args to LicenseFileStorageEx().
void clear() override
Removes local license file.
void setPermissionsDefault()
Sets permissions to default values: null security attributes pointer for Windows or 0644 for UNIX.
void setPermissionsWin(void *permissions)
Set platform dependent permission (Windows).
std::string loadLicense() override
Load license from file.
~LicenseFileStorageEx() override
Destructor for LicenseFileStorageEx object.
LicenseFileStorageEx(const std::string &appName, const std::wstring &licensePath=std::wstring())
LicenseFileStorageEx constructor.
Class that saves license in a file, derived from LicenseFileStorageBase class.
LicenseFileStorage(const std::wstring &licensePath=std::wstring())
Constructor for LicenseFileStorage object.
void saveLicense(const std::string &data) override
Saves given license data string to the file.
std::string loadLicense() override
Load license from file.
static ptr_t create(const std::wstring &licensePath=std::wstring())
Allocates and constructs a LicenseFileStorage object and passes args to LicenseFileStorage().
void clear() override
Removes local license file.
LicenseStorage interface.