gcontini
2019-10-19 8bbef2865455754425a84b86680a89bff8aa7691
src/library/license++.cpp
@@ -1,6 +1,6 @@
//============================================================================
// Name        : license-manager-cpp.cpp
// Author      :
// Author      :
// Version     :
// Copyright   : BSD
//============================================================================
@@ -9,22 +9,24 @@
#include <stdio.h>
#include <stdlib.h>
#include <cstring>
#include <iostream>
#include "api/license++.h"
#include "LicenseReader.h"
#include "LicenseReader.hpp"
using namespace std;
DllExport void print_error(char out_buffer[256], LicenseInfo* licenseInfo) {
void print_error(char out_buffer[256], LicenseInfo* licenseInfo) {
}
DllExport void identify_pc(IDENTIFICATION_STRATEGY pc_id_method,
      char chbuffer[PC_IDENTIFIER_SIZE + 1]) {
void identify_pc(IDENTIFICATION_STRATEGY pc_id_method, char chbuffer[PC_IDENTIFIER_SIZE + 1]) {
}
static void mergeLicenses(vector<license::FullLicenseInfo> licenses,
      LicenseInfo* license) {
   if (license != NULL) {
   if (license != nullptr) {
      time_t curLicense_exp = 0;
      for (auto it = licenses.begin(); it != licenses.end(); it++) {
         //choose the license that expires later...
@@ -40,7 +42,7 @@
}
EVENT_TYPE acquire_license(const char * product,
      LicenseLocation licenseLocation, LicenseInfo* license) {
      const LicenseLocation* licenseLocation, LicenseInfo* licenseInfoOut) {
   license::LicenseReader lr = license::LicenseReader(licenseLocation);
   vector<license::FullLicenseInfo> licenses;
   license::EventRegistry er = lr.readLicenses(string(product), licenses);
@@ -49,38 +51,42 @@
      vector<license::FullLicenseInfo> licenses_with_errors;
      vector<license::FullLicenseInfo> licenses_ok;
      for (auto it = licenses.begin(); it != licenses.end(); it++) {
         license::EventRegistry validation_er = it->validate(0);
         if (validation_er.isGood()) {
         bool valid = it->validate(0,er);
         if (valid) {
            licenses_ok.push_back(*it);
         } else {
            licenses_with_errors.push_back(*it);
         }
         er.append(validation_er);
      }
      if (licenses_ok.size() > 0) {
         er.turnErrosIntoWarnings();
         er.turnErrorsIntoWarnings();
         result = LICENSE_OK;
         mergeLicenses(licenses_ok, license);
         mergeLicenses(licenses_ok, licenseInfoOut);
      } else {
         er.turnWarningsIntoErrors();
         result = er.getLastFailure()->event_type;
         mergeLicenses(licenses_with_errors, license);
         mergeLicenses(licenses_with_errors, licenseInfoOut);
      }
   } else {
      er.turnWarningsIntoErrors();
      result = er.getLastFailure()->event_type;
   }
   if (license != NULL) {
      er.exportLastEvents(license->status, 5);
#ifdef _DEBUG
   cout << er <<endl;
#endif
   if (licenseInfoOut != nullptr) {
      er.exportLastEvents(licenseInfoOut->status, AUDIT_EVENT_NUM);
   }
   return result;
}
DllExport enum EVENT_TYPE confirm_license(char * product,
EVENT_TYPE confirm_license(char * product,
      LicenseLocation licenseLocation) {
   return LICENSE_OK;
}
DllExport enum EVENT_TYPE release_license(char * product,
EVENT_TYPE release_license(char * product,
      LicenseLocation licenseLocation) {
   return LICENSE_OK;
}