ESyS-Particle  2.3.4
packed_multi_message.h
Go to the documentation of this file.
1 // //
3 // Copyright (c) 2003-2017 by The University of Queensland //
4 // Centre for Geoscience Computing //
5 // http://earth.uq.edu.au/centre-geoscience-computing //
6 // //
7 // Primary Business: Brisbane, Queensland, Australia //
8 // Licensed under the Open Software License version 3.0 //
9 // http://www.apache.org/licenses/LICENSE-2.0 //
10 // //
12 
13 #ifndef __PACKED_MULTI_MESSAGE_H
14 #define __PACKED_MULTI_MESSAGE_H
15 
16 //--- MPI ---
17 #include <mpi.h>
18 
19 //--- project includes ---
21 
22 //--- STL includes ---
23 #include <string>
24 using std::string;
25 
26 
35 {
36  private:
37  MPI_Comm m_comm;
38  char* m_vbuffer;
40  int *m_position;
41  int *m_rpos;
42 
44  int *m_displ; //<! the diplacements of the slices in the buffer
45  int m_size;
47 
48  protected:
49  void grow();
50  void growTo(int);
51 
52  public:
53  TML_PackedMultiMessage(MPI_Comm,int isize=64);
54  virtual ~TML_PackedMultiMessage();
55 
57 
58  char* buffer(){return m_vbuffer;}; // make protected or make TML_Comm friend?
59  int* offsets(){return m_displ;};
60  int* sizes(){return m_rpos;};
61 
62  void clear();
63  void begin_pack(int);
64  void begin_unpack(int);
65 
66  void append(int,int);
67  void append(double,int);
68  void append(const string&,int);
69  void append(bool,int);
70 
71  int pop_int(int);
72  double pop_double(int);
73  //string pop_string(int);
74  string pop_string();
75  bool pop_bool(int);
76 };
77 
78 #endif // __PACKED_MULTI_MESSAGE_H
TML_PackedMultiMessage::pop_double
double pop_double(int)
Definition: packed_multi_message.cpp:231
TML_PackedMultiMessage::pop_string
string pop_string()
Definition: packed_multi_message.cpp:249
TML_PackedMultiMessage::append
void append(int, int)
Definition: packed_multi_message.cpp:148
esys::lsm::bpu::len
int len(const boost::python::object &pyOb)
Definition: Util.h:30
TML_PackedMultiMessage::m_position
int * m_position
the current end of the content in each slice
Definition: packed_multi_message.h:40
TML_PackedMultiMessage::clear
void clear()
Definition: packed_multi_message.cpp:114
TML_PackedMultiMessage::m_displ
int * m_displ
Definition: packed_multi_message.h:44
TML_PackedMultiMessage::m_rpos
int * m_rpos
the number of bytes in the slice (i.e. m_position-m_displ)
Definition: packed_multi_message.h:41
TML_PackedMultiMessage::grow
void grow()
Definition: packed_multi_message.cpp:74
TML_PackedMultiMessageSlab
Handle class to access multimessages via a packed message interface.
Definition: multi_message_slab.h:33
TML_PackedMultiMessage::begin_pack
void begin_pack(int)
Definition: packed_multi_message.cpp:125
TML_PackedMultiMessage::buffer
char * buffer()
Definition: packed_multi_message.h:58
TML_PackedMultiMessage::m_recvcount
int * m_recvcount
the buffer for the transfer of the size of the vbuffer
Definition: packed_multi_message.h:43
TML_PackedMultiMessage::~TML_PackedMultiMessage
virtual ~TML_PackedMultiMessage()
Definition: packed_multi_message.cpp:51
TML_PackedMultiMessage::pop_int
int pop_int(int)
Definition: packed_multi_message.cpp:216
TML_PackedMultiMessage::m_vbuffer
char * m_vbuffer
Definition: packed_multi_message.h:38
TML_PackedMultiMessage::offsets
int * offsets()
Definition: packed_multi_message.h:59
TML_PackedMultiMessage::begin_unpack
void begin_unpack(int)
Definition: packed_multi_message.cpp:133
TML_PackedMultiMessage::m_int_increment
int m_int_increment
Definition: packed_multi_message.h:46
TML_PackedMultiMessage::sizes
int * sizes()
Definition: packed_multi_message.h:60
packed_multi_message.h
TML_PackedMultiMessage::m_size
int m_size
Definition: packed_multi_message.h:45
TML_PackedMultiMessage::TML_PackedMultiMessage
TML_PackedMultiMessage(MPI_Comm, int isize=64)
Definition: packed_multi_message.cpp:29
TML_PackedMultiMessage::m_comm
MPI_Comm m_comm
Definition: packed_multi_message.h:37
TML_PackedMultiMessage::operator[]
TML_PackedMultiMessageSlab operator[](int)
Definition: packed_multi_message.cpp:63
TML_PackedMultiMessage::growTo
void growTo(int)
Definition: packed_multi_message.cpp:94
TML_PackedMultiMessage::m_vbuffersize
int m_vbuffersize
the size of the buffer per slice
Definition: packed_multi_message.h:39
TML_PackedMultiMessage::pop_bool
bool pop_bool(int)
Definition: packed_multi_message.cpp:262
multi_message_slab.h
TML_PackedMultiMessage::m_dbl_increment
int m_dbl_increment
the "packing size" of int/double
Definition: packed_multi_message.h:46
TML_PackedMultiMessage
Message buffer for sending and receiving packed data to mutltiple receivers. Data types are not check...
Definition: packed_multi_message.h:35