EventAnalysis  1.3.0
PersistenceService.h
Go to the documentation of this file.
1 /*
2  * PersistenceService.h
3  *
4  * Created on: 12 May 2017
5  * Author: Nicola Mori
6  */
7 
8 #ifndef PERSISTENCESERVICE_H_
9 #define PERSISTENCESERVICE_H_
10 
11 #include "core/ObserverPtr.h"
12 #include "data/DataStoreUser.h"
13 #include "data/ObjectConsumer.h"
14 
15 #include <memory>
16 #include <string>
17 
18 namespace EA {
19 
20 class PersistenceService : public Info, public Configurable, public DataStoreUser, public ObjectConsumer {
21 
22 public:
23  PersistenceService(const std::string &name, const std::string &output) : Info(name), _output(output) {}
24  virtual ~PersistenceService() {}
25 
26  const std::string &GetOutput() { return _output; }
27 
28  virtual bool Connect() { return true; }
29  virtual bool Disconnect() { return true; }
30 
44  virtual bool BookEventObject(const std::string &objName, const std::string &objStore) { return true; }
45  virtual bool BookPassObject(const std::string &objName, const std::string &objStore) { return true; }
46  virtual bool BookGlobalObject(const std::string &objName, const std::string &objStore) { return true; }
47 
49  struct BookedObject {
50  std::string objName;
51  std::string storeName;
52  BookedObject(std::string name, std::string store) : objName{std::move(name)}, storeName{std::move(store)} {}
53  bool operator==(const BookedObject &obj) { return obj.objName == objName && obj.storeName == storeName; };
54  };
55 
60  virtual std::vector<BookedObject> GetBookedEventObjects() { return {}; };
61 
66  virtual std::vector<BookedObject> GetBookedPassObjects() { return {}; };
67 
72  virtual std::vector<BookedObject> GetBookedGlobalObjects() { return {}; };
73 
74  virtual bool BeginOfEvent() { return true; }
75 
84  virtual bool EndOfEvent() { return true; }
85 
86  virtual bool BeginOfPass() { return true; }
87  virtual bool EndOfPass() { return true; }
88 
89  virtual bool BeginOfProcessing() { return true; }
90  virtual bool EndOfProcessing() { return true; }
91 
108  virtual std::unique_ptr<PersistenceService> Copy(const std::string &name, const std::string &output) {
109  throw CopyNotOverridden();
110  }
111 
112  // Exception classes
114  struct CopyNotOverridden {};
115 
116 private:
117  std::string _output;
118 };
119 
120 } // namespace EA
121 
122 #include "plugin/FactoryMacros.h"
123 #define RegisterPersistence(className) \
124  RegisterClass(EA::PersistenceService, className, const std::string &, const std::string &)
125 #define RegisterNSPersistence(namespace, className) \
126  RegisterClassAs(EA::PersistenceService, className, #namespace "::" #className, const std::string &, \
127  const std::string &)
128 
129 #endif /* PERSISTENCESERVICE_H_ */
BookedObject(std::string name, std::string store)
Definition: PersistenceService.h:52
virtual bool EndOfEvent()
Save event objects on persistence medium.
Definition: PersistenceService.h:84
virtual bool BookGlobalObject(const std::string &objName, const std::string &objStore)
Definition: PersistenceService.h:46
virtual bool BookEventObject(const std::string &objName, const std::string &objStore)
Books an event object for persistence.
Definition: PersistenceService.h:44
virtual bool BeginOfEvent()
Definition: PersistenceService.h:74
virtual bool EndOfPass()
Definition: PersistenceService.h:87
Definition: PersistenceService.h:20
std::string objName
Definition: PersistenceService.h:50
Interface for retrieving informations about an object.
Definition: Info.h:18
virtual bool BookPassObject(const std::string &objName, const std::string &objStore)
Definition: PersistenceService.h:45
IncludeFileExc.h IncludeFileExc class declaration.
Definition: Algorithm.h:21
virtual bool Connect()
Definition: PersistenceService.h:28
virtual std::unique_ptr< PersistenceService > Copy(const std::string &name, const std::string &output)
Creates a copy of the persistence service.
Definition: PersistenceService.h:108
virtual bool BeginOfProcessing()
Definition: PersistenceService.h:89
virtual bool Disconnect()
Definition: PersistenceService.h:29
virtual bool EndOfProcessing()
Definition: PersistenceService.h:90
Interface for classes needing access to the data stores.
Definition: DataStoreUser.h:17
virtual std::vector< BookedObject > GetBookedEventObjects()
Gets the list of booked event objects.
Definition: PersistenceService.h:60
bool operator==(const BookedObject &obj)
Definition: PersistenceService.h:53
virtual std::vector< BookedObject > GetBookedGlobalObjects()
Gets the list of booked global objects.
Definition: PersistenceService.h:72
const std::string & GetOutput()
Definition: PersistenceService.h:26
std::string _output
Definition: PersistenceService.h:117
std::string storeName
Definition: PersistenceService.h:51
Exception class for missing override of Copy.
Definition: PersistenceService.h:114
virtual std::vector< BookedObject > GetBookedPassObjects()
Gets the list of booked pass objects.
Definition: PersistenceService.h:66
PersistenceService(const std::string &name, const std::string &output)
Definition: PersistenceService.h:23
virtual ~PersistenceService()
Definition: PersistenceService.h:24
Interface for a configurable class.
Definition: Configurable.h:25
Definition: PersistenceService.h:49
Interface for a class which consumes data objects.
Definition: ObjectConsumer.h:27
virtual bool BeginOfPass()
Definition: PersistenceService.h:86