source: src/comm/mpi/has_request_vec.hpp@ 9fc7e1

Last change on this file since 9fc7e1 was 76e019, checked in by Julian Iseringhausen <isering@…>, 14 years ago

Check that mpi.h will be included as the first header.

Needed by certain mpi implementations.

git-svn-id: https://svn.version.fz-juelich.de/scafacos/trunk@1248 5161e1c8-67bf-11de-9fd5-51895aff932f

  • Property mode set to 100644
File size: 901 bytes
Line 
1/**
2 * @file has_request_vec.hpp
3 * @author Julian Iseringhausen <isering@ins.uni-bonn.de>
4 * @date Mon Nov 21 13:27:22 2011
5 *
6 * @brief A convenience base class for classes using MPI_Requests.
7 *
8 */
9
10
11#ifndef HAS_REQUEST_VEC_HPP_
12#define HAS_REQUEST_VEC_HPP_
13
14#ifdef HAVE_MPI
15
16namespace VMG
17{
18
19class HasRequestVec
20{
21protected:
22
23MPI_Request& Request()
24{
25 request_vec.push_back(MPI_Request());
26 return request_vec.back();
27}
28
29void ClearRequests()
30{
31 if (request_vec.size() > 0) {
32#ifndef NDEBUG
33 int rval = MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
34 assert(rval == MPI_SUCCESS);
35#else
36 MPI_Waitall(static_cast<int>(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE);
37#endif
38 request_vec.clear();
39 }
40}
41
42private:
43 std::vector<MPI_Request> request_vec;
44};
45
46}
47
48#endif /* HAVE_MPI */
49
50#endif /* HAS_REQUEST_VEC_HPP_ */
Note: See TracBrowser for help on using the repository browser.