-/* Copyright (c) 2010-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2010-2018. The SimGrid Team. All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
* under the terms of the license (GNU LGPL) which comes with this package. */
/* in the case of non-contiguous memory the user address should be keep
* to unserialize the data inside the user memory*/
void *old_buf_;
- /* this let us know how to unserialize at the end of
- * the communication*/
+ /* this is especially for derived datatypes that we need to serialize/unserialize.
+ * It let us know how to unserialize at the end of the communication */
MPI_Datatype old_type_;
size_t size_;
int src_;
MPI_Request detached_sender_;
int refcount_;
MPI_Op op_;
+ int cancelled_;
public:
Request()=default;
Request(void *buf, int count, MPI_Datatype datatype, int src, int dst, int tag, MPI_Comm comm, unsigned flags);
int tag();
int flags();
int detached();
+ MPI_Datatype type();
void print_request(const char *message);
void start();
+ void cancel();
static void finish_wait(MPI_Request* request, MPI_Status * status);
static void unref(MPI_Request* request);
static int match_send(void* a, void* b, simgrid::kernel::activity::CommImpl* ignored);
static int match_recv(void* a, void* b, simgrid::kernel::activity::CommImpl* ignored);
- int add_f();
+ int add_f() override;
static void free_f(int id);
static Request* f2c(int);