FRIBParallelanalysis  1.0
FrameworkforMPIParalleldataanalysisatFRIB
MPIRawToParametersWorker.h
Go to the documentation of this file.
1 /*
2  This software is Copyright by the Board of Trustees of Michigan
3  State University (c) Copyright 2017.
4 
5  You may use this software under the terms of the GNU public license
6  (GPL). The terms of this license are described at:
7 
8  http://www.gnu.org/licenses/gpl.txt
9 
10  Authors:
11  Ron Fox
12  Giordano Cerriza
13  FRIB
14  Michigan State University
15  East Lansing, MI 48824-1321
16 */
17 
21 #ifndef MPIRAWTOPARAMETERSWORKER_H
22 #define MPIRAWTOPARAMETERSWORKER_H
23 #include <stddef.h>
24 #include <vector>
25 #include <cstdint>
26 
27 
28 namespace frib {
29  namespace analysis {
30  class AbstractApplication;
31  struct _FRIB_MPI_Message_Header;
32  typedef struct _FRIB_MPI_Message_Header FRIB_MPI_Message_Header;
33  struct _FRIB_MPI_Parameter_Value;
34  typedef struct _FRIB_MPI_Parameter_Value FRIB_MPI_Parameter_Value;
68  AbstractApplication& m_App;
69  int m_rank;
70  FRIB_MPI_Parameter_Value* m_pParameterBuffer;
71  size_t m_paramBufferSize;
72  public:
75  virtual void operator()(int argc, char** argv);
76  virtual void initializeUserCode(
77  int argc, char** argv, AbstractApplication& pApp
78  ) {}
79  virtual void unpackData(const void* pData) = 0;
80  private:
81  void requestData();
82  void getHeader(FRIB_MPI_Message_Header& header);
83  void getData(void* pData, size_t nBytes);
84  void forwardPassthrough(const void* pData, size_t nBytes);
85  void sendParameters(const std::vector<std::pair<unsigned, double>>& event, std::uint64_t trigger);
86  void sendEnd();
87  void processDataBlock(const void* pData, size_t nBytes, std::uint64_t firstTrigger);
88  void throwMPIError(int status, const char* prefix);
89  };
90 
91  }
92 }
93 #endif
CMPIRawToParametersWorker(AbstractApplication &App)
Definition: MPIRawToParametersWorker.cpp:38
Definition: AbstractApplication.h:102
Definition: AnalysisRingItems.h:151
virtual ~CMPIRawToParametersWorker()
Definition: MPIRawToParametersWorker.cpp:48
virtual void operator()(int argc, char **argv)
Definition: MPIRawToParametersWorker.cpp:62
Definition: AnalysisRingItems.h:136
Definition: MPIRawToParametersWorker.h:67
Definition: AbstractApplication.cpp:30