/** * @file has_request_vec.hpp * @author Julian Iseringhausen * @date Mon Nov 21 13:27:22 2011 * * @brief A convenience base class for classes using MPI_Requests. * */ #ifndef HAS_REQUEST_VEC_HPP_ #define HAS_REQUEST_VEC_HPP_ #ifdef HAVE_MPI namespace VMG { class HasRequestVec { protected: MPI_Request& Request() { request_vec.push_back(MPI_Request()); return request_vec.back(); } void ClearRequests() { if (request_vec.size() > 0) { #ifndef NDEBUG int rval = MPI_Waitall(static_cast(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE); assert(rval == MPI_SUCCESS); #else MPI_Waitall(static_cast(request_vec.size()), &request_vec.front(), MPI_STATUSES_IGNORE); #endif request_vec.clear(); } } private: std::vector request_vec; }; } #endif /* HAVE_MPI */ #endif /* HAS_REQUEST_VEC_HPP_ */