g4tools  5.4.0
mpi_send_basket
Go to the documentation of this file.
1 // Copyright (C) 2010, Guy Barrand. All rights reserved.
2 // See the file tools.license for terms.
3 
4 #ifndef tools_wroot_mpi_send_basket
5 #define tools_wroot_mpi_send_basket
6 
7 #include "mpi_protocol"
8 #include "../impi"
9 #include "basket"
10 
11 namespace tools {
12 namespace wroot {
13 
14 inline bool mpi_pack_basket(impi& a_mpi,uint32 a_icol,const basket& a_basket) {
15  if(!a_mpi.pack(a_icol)) return false;
16 
17  if(!a_mpi.spack(a_basket.object_name())) return false;
18  if(!a_mpi.spack(a_basket.object_title())) return false;
19 
20  if(!a_mpi.pack(a_basket.last())) return false;
21  if(!a_mpi.pack(a_basket.nev_buf_size())) return false;
22  if(!a_mpi.pack(a_basket.nev())) return false;
23 
24  if(a_basket.entry_offset()) {
25  if(!a_mpi.bpack(true)) return false;
26  if(!a_mpi.pack(a_basket.nev_buf_size(),a_basket.entry_offset())) return false;
27  } else {
28  if(!a_mpi.bpack(false)) return false;
29  }
30 
31  if(a_basket.displacement()) {
32  if(!a_mpi.bpack(true)) return false;
33  if(!a_mpi.pack(a_basket.nev_buf_size(),a_basket.displacement())) return false;
34  } else {
35  if(!a_mpi.bpack(false)) return false;
36  }
37 
38  if(!a_mpi.pack(a_basket.datbuf().length(),a_basket.datbuf().buf())) return false;
39  return true;
40 }
41 
42 inline bool mpi_send_basket(impi& a_mpi,int a_dest,int a_tag,uint32 a_id,uint32 a_icol,const basket& a_basket) {
43  a_mpi.pack_reset();
44  if(!a_mpi.pack(mpi_protocol_basket())) return false;
45  if(!a_mpi.pack(a_id)) return false;
46  if(!mpi_pack_basket(a_mpi,a_icol,a_basket)) return false;
47  return a_mpi.send_buffer(a_dest,a_tag);
48 }
49 
50 }}
51 
52 #endif
tools::wroot::basket::displacement
const int * displacement() const
Definition: basket:178
tools::wroot::buffer::length
uint32 length() const
Definition: buffer:89
tools::wroot::key::object_name
const std::string & object_name() const
Definition: key:129
tools::wroot::basket::datbuf
const buffer & datbuf() const
Definition: basket:172
tools::impi::bpack
virtual bool bpack(bool)=0
tools::wroot::basket::entry_offset
const int * entry_offset() const
Definition: basket:175
tools::impi::pack_reset
virtual void pack_reset()=0
tools::wroot::key::object_title
const std::string & object_title() const
Definition: key:130
tools::wroot::buffer::buf
char * buf()
Definition: buffer:87
tools::impi
Definition: impi:14
basket
tools
inlined C code : ///////////////////////////////////
Definition: aida_ntuple:26
tools::wroot::mpi_send_basket
bool mpi_send_basket(impi &a_mpi, int a_dest, int a_tag, uint32 a_id, uint32 a_icol, const basket &a_basket)
Definition: mpi_send_basket:42
tools::wroot::basket
Definition: basket:14
tools::impi::pack
virtual bool pack(char)=0
tools::wroot::mpi_protocol_basket
uint32 mpi_protocol_basket()
Definition: mpi_protocol:12
tools::wroot::basket::nev
uint32 nev() const
Definition: basket:182
tools::wroot::mpi_pack_basket
bool mpi_pack_basket(impi &a_mpi, uint32 a_icol, const basket &a_basket)
Definition: mpi_send_basket:14
tools::wroot::basket::last
uint32 last() const
Definition: basket:183
tools::uint32
unsigned int uint32
Definition: typedefs:71
tools::impi::spack
virtual bool spack(const std::string &)=0
mpi_protocol
tools::wroot::basket::nev_buf_size
uint32 nev_buf_size() const
Definition: basket:181
tools::impi::send_buffer
virtual bool send_buffer(int, int)=0