ESyS-Particle  2.3.4
packed_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_MESSAGE_H
14 #define __PACKED_MESSAGE_H
15 
16 //--- MPI ---
17 #include <mpi.h>
18 
19 //--- project includes ---
21 #include "Foundation/vec3.h" // for append(Vec3), pop_vec3()
22 
23 //--- STL includes ---
24 #include <string>
25 using std::string;
26 
27 
35 {
36  protected:
37  MPI_Comm m_comm;
38  char* m_buffer;
40  int m_pack_pos;
43 
44  void grow();
45  void growTo(int);
46 
47  public:
48  TML_Packed_Message(MPI_Comm,unsigned int size=64);
49  virtual ~TML_Packed_Message();
50 
51  char* buffer(){return m_buffer;}; // make protected ?
52  int size(){return m_pack_pos;};
53 
54  virtual void begin_pack(){m_pack_pos=0;};
55  virtual void begin_unpack(){m_unpack_pos=0;};
56  virtual void append(int);
57  virtual void append(double);
58  virtual void append(const string&);
59  virtual void append(const Vec3&);
60  virtual void append(bool);
61 
62  virtual int pop_int();
63  virtual double pop_double();
64  virtual void pop_doubles(double*,int);
65  virtual string pop_string();
66  virtual Vec3 pop_vec3();
67  virtual bool pop_bool();
68 };
69 #endif //__PACKED_MESSAGE_H
TML_Packed_Message::begin_pack
virtual void begin_pack()
Definition: packed_message.h:54
TML_Packed_Message::append
virtual void append(int)
Definition: packed_message.cpp:71
TML_PackedMessageInterface
Abstract base/interface class for packed messages to be used in TML_Pack.
Definition: packed_message_interface.h:29
TML_Packed_Message
Message buffer for sending and receiving packed data. Data types are not checked. The implementatio...
Definition: packed_message.h:35
TML_Packed_Message::m_buffer
char * m_buffer
Definition: packed_message.h:38
esys::lsm::bpu::len
int len(const boost::python::object &pyOb)
Definition: Util.h:30
TML_Packed_Message::m_buffersize
int m_buffersize
the size of the buffer
Definition: packed_message.h:39
TML_Packed_Message::begin_unpack
virtual void begin_unpack()
Definition: packed_message.h:55
TML_Packed_Message::m_pack_pos
int m_pack_pos
the current end of the content
Definition: packed_message.h:40
TML_Packed_Message::m_dbl_increment
int m_dbl_increment
the "packing size" of int/double
Definition: packed_message.h:42
TML_Packed_Message::growTo
void growTo(int)
Definition: packed_message.cpp:47
TML_Packed_Message::m_int_increment
int m_int_increment
Definition: packed_message.h:42
TML_Packed_Message::grow
void grow()
Definition: packed_message.cpp:61
TML_Packed_Message::pop_doubles
virtual void pop_doubles(double *, int)
Definition: packed_message.cpp:168
packed_message_interface.h
TML_Packed_Message::~TML_Packed_Message
virtual ~TML_Packed_Message()
Definition: packed_message.cpp:37
TML_Packed_Message::pop_string
virtual string pop_string()
Definition: packed_message.cpp:180
Vec3
Definition: vec3.h:47
TML_Packed_Message::m_unpack_pos
int m_unpack_pos
the current pos for unpacking
Definition: packed_message.h:41
vec3.h
TML_Packed_Message::size
int size()
Definition: packed_message.h:52
packed_message.h
TML_Packed_Message::m_comm
MPI_Comm m_comm
Definition: packed_message.h:37
TML_Packed_Message::pop_double
virtual double pop_double()
Definition: packed_message.cpp:152
TML_Packed_Message::pop_int
virtual int pop_int()
Definition: packed_message.cpp:138
TML_Packed_Message::pop_bool
virtual bool pop_bool()
Definition: packed_message.cpp:212
TML_Packed_Message::pop_vec3
virtual Vec3 pop_vec3()
Definition: packed_message.cpp:198
TML_Packed_Message::buffer
char * buffer()
Definition: packed_message.h:51
TML_Packed_Message::TML_Packed_Message
TML_Packed_Message(MPI_Comm, unsigned int size=64)
Definition: packed_message.cpp:23