FairRoot/PandaRoot
PndMQBurstProcessor.h
Go to the documentation of this file.
1 /********************************************************************************
2  * Copyright (C) 2014 GSI Helmholtzzentrum fuer Schwerionenforschung GmbH *
3  * *
4  * This software is distributed under the terms of the *
5  * GNU Lesser General Public Licence version 3 (LGPL) version 3, *
6  * copied verbatim in the file "LICENSE" *
7  ********************************************************************************/
15 #ifndef PndMQBurstProcessor_H_
16 #define PndMQBurstProcessor_H_
17 
18 #include <iostream>
19 
20 #include "TList.h"
21 #include "TObjString.h"
22 
23 #include "FairMQDevice.h"
24 #include "FairMQLogger.h"
25 #include "FairParGenericSet.h"
26 #include "FairGeoParSet.h"
27 
29 
30 
31 #include "baseMQtools.h"
32 
33 #include "TMessage.h"
34 
35 #ifndef __CINT__
36 #include <boost/thread.hpp>
37 #include <boost/bind.hpp>
38 #include <boost/serialization/access.hpp>
39 #include <boost/archive/text_iarchive.hpp>
40 #include <boost/archive/binary_iarchive.hpp>
41 #include <boost/archive/text_oarchive.hpp>
42 #include <boost/archive/binary_oarchive.hpp>
43 #include <boost/serialization/vector.hpp>
44 #include <boost/serialization/unique_ptr.hpp>
45 #endif //__CINT__
46 
47 
48 using namespace std;
49 
50 class PndMQBurstProcessor : public FairMQDevice
51 {
52  public:
54  fHasBoostSerialization(false), fCurrentRunId(0), fNewRunId(0)
55  {
56  gSystem->ResetSignal(kSigInterrupt);
57  gSystem->ResetSignal(kSigTermination);
58 
59  // Check if boost serialization is available if it is chosen
60  using namespace baseMQ::tools::resolve;
61  // coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
62  if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value)
63  {
64  if (has_BoostSerialization<FairTimeStamp, void(boost::archive::binary_iarchive&, const unsigned int)>::value == 1)
65  {
66  fHasBoostSerialization = true;
67  }
68  }
69 
70 
71  }
72 
74  {
75  fParCList->Clear();
76  }
77 
78 
79  virtual void UpdateParameters();
80  virtual FairParGenericSet* UpdateParameter(FairParGenericSet* thisPar);
81  virtual void SetParameters(){};
82  static void CustomCleanupParameters(void *data, void *hint);
83  static void free_string(void *data, void *hint);
84 
85  virtual void ProcessData() = 0;
86 
87 
88  template <class Archive>
89  void serialize(Archive& ar, const unsigned int version)
90  {
91  ar& fBurstDataIn;
92  ar& fBurstDataOut;
93  }
94 
95  protected:
96  virtual void Run();
101  TList* fParCList;
102 
103  private:
104 
105 
106 
107 
108 #ifndef __CINT__ // for BOOST serialization
109  friend class boost::serialization::access;
111 #endif // for BOOST serialization
112 
114 // PndMQBurstProcessor(const PndMQBurstProcessor&);
115 // PndMQBurstProcessor operator=(const PndMQBurstProcessor&);
116 };
117 
118 #endif /* PndMQBurstProcessor_H_ */
virtual void SetParameters()
void serialize(Archive &ar, const unsigned int version)
void free_string(void *data, void *hint)
fRun Run(0, nEvents)