16 Request(MPI_Request* r) : request(r) {};
33 bool operator==(
const MPI_Request* r)
const {
return r == request; }
36 return complete || request ==
nullptr || *request == MPI_REQUEST_NULL;
41 ret = MPI_Test(request, &complete, ret);
42 if (ret != MPI_SUCCESS) complete =
true;
48 ret = MPI_Wait(request, ret);
53 if (!is_complete()) MPI_Request_free(request);
56 bool done() {
return test(); }
57 void resume() { test(); }
59 fenix_assert(is_complete());
67 complete = r.complete;
71 MPI_Request* request =
nullptr;