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 #include "baseMQtools.h"
31 
32 #include "TMessage.h"
33 
34 #ifndef __CINT__
35 #include <boost/thread.hpp>
36 #include <boost/bind.hpp>
37 #include <boost/serialization/access.hpp>
38 #include <boost/archive/text_iarchive.hpp>
39 #include <boost/archive/binary_iarchive.hpp>
40 #include <boost/archive/text_oarchive.hpp>
41 #include <boost/archive/binary_oarchive.hpp>
42 #include <boost/serialization/vector.hpp>
43 #include <boost/serialization/unique_ptr.hpp>
44 #endif //__CINT__
45 
46 using namespace std;
47 
48 class PndMQBurstProcessor : public FairMQDevice {
49  public:
50  PndMQBurstProcessor() : fHasBoostSerialization(false), fCurrentRunId(0), fNewRunId(0)
51  {
52  gSystem->ResetSignal(kSigInterrupt);
53  gSystem->ResetSignal(kSigTermination);
54 
55  // Check if boost serialization is available if it is chosen
56  using namespace baseMQ::tools::resolve;
57  // coverity[pointless_expression]: suppress coverity warnings on apparant if(const).
58  if (is_same<boost::archive::binary_iarchive, boost::archive::binary_iarchive>::value || is_same<boost::archive::binary_iarchive, boost::archive::text_iarchive>::value) {
59  if (has_BoostSerialization<FairTimeStamp, void(boost::archive::binary_iarchive &, const unsigned int)>::value == 1) {
60  fHasBoostSerialization = true;
61  }
62  }
63  }
64 
65  virtual ~PndMQBurstProcessor() { fParCList->Clear(); }
66 
67  virtual void UpdateParameters();
68  virtual FairParGenericSet *UpdateParameter(FairParGenericSet *thisPar);
69  virtual void SetParameters(){};
70  static void CustomCleanupParameters(void *data, void *hint);
71  static void free_string(void *data, void *hint);
72 
73  virtual void ProcessData() = 0;
74 
75  template <class Archive>
76  void serialize(Archive &ar, const unsigned int version)
77  {
78  ar &fBurstDataIn;
79  ar &fBurstDataOut;
80  }
81 
82  protected:
83  virtual void Run();
87  int fNewRunId;
88  TList *fParCList;
89 
90  private:
91 #ifndef __CINT__ // for BOOST serialization
92  friend class boost::serialization::access;
93  bool fHasBoostSerialization;
94 #endif // for BOOST serialization
95 
97  // PndMQBurstProcessor(const PndMQBurstProcessor&);
98  // PndMQBurstProcessor operator=(const PndMQBurstProcessor&);
99 };
100 
101 #endif /* PndMQBurstProcessor_H_ */
virtual void SetParameters()
STL namespace.
void serialize(Archive &ar, const unsigned int version)