gcontini
2019-11-30 ac7ea79c330d9684e39cb41ef528a1c44eb13616
src/library/base/EventRegistry.h
@@ -2,51 +2,59 @@
 * EventRegistry.h
 *
 *  Created on: Mar 30, 2014
 *
 *
 */
#ifndef EVENTREGISTRY_H_
#define EVENTREGISTRY_H_
#include "../api/datatypes.h"
#include <licensecc/datatypes.h>
#include <vector>
#include <map>
#include <set>
#include <string>
namespace license {
/*
 AuditEvent error_event_builder(EVENT_TYPE event);
 AuditEvent audit_event_builder(EVENT_TYPE event, SEVERITY severity);
 AuditEvent audit_event_builder(EVENT_TYPE event, SEVERITY severity,
 const string& eventParameter);*/
/**
 * Tracks the events relative to a license and provide explanation regarding
 * failures to verify licenses.
 */
class EventRegistry {
private:
   friend EventRegistry& operator<<(EventRegistry&, AuditEvent&);
   friend EventRegistry& operator<<(EventRegistry&, EventRegistry&);
   //TODO change into map
   friend EventRegistry &operator<<(EventRegistry &, AuditEvent &);
   friend EventRegistry &operator<<(EventRegistry &, EventRegistry &);
   friend std::ostream &operator<<(std::ostream &out, const EventRegistry &er);
   std::vector<AuditEvent> logs;
   //Forbid copy
   //EventRegistry(const EventRegistry& that) = delete;
   /**
    * For every license keep track of the events who progressed most
    * in the validation process
    */
   std::map<std::string, size_t> mostAdvancedLogIdx_by_LicenseId;
   int current_validation_step;
public:
   EventRegistry();
   //operator <<
   // operator <<
   void append(const EventRegistry &eventRegistry);
   void turnLastEventIntoError();
   bool turnEventIntoError(EVENT_TYPE event);
   bool turnErrosIntoWarnings();
   /**
    * Turn the event warning for the license with the most advanced status
    * into an error.
    */
   bool turnWarningsIntoErrors();
   bool turnErrorsIntoWarnings();
   bool isGood() const;
   /**
    * Return the last failure (event with warn or error status)
    * for the license with the most advanced status.
    * @return NULL if no failures are found.
    */
   AuditEvent const* getLastFailure() const;
   bool isGood() const;
   void addError(EVENT_TYPE event);
   void addEvent(EVENT_TYPE event, SEVERITY severity);
   void addEvent(EVENT_TYPE event, SEVERITY severity,
         const std::string &eventParameter);
   const AuditEvent *getLastFailure() const;
   void addEvent(EVENT_TYPE event, const std::string &licenseLocationId);
   void addEvent(EVENT_TYPE event, const char *licenseLocationId = nullptr, const char *info = nullptr);
   void exportLastEvents(AuditEvent *auditEvents, int nlogs);
};
}
}  // namespace license
#endif /* EVENTREGISTRY_H_ */