};
/* Types of tasks exchanged between nodes. */
-typedef enum {
+enum e_message_type_t {
FIND_SUCCESSOR,
FIND_SUCCESSOR_ANSWER,
GET_PREDECESSOR,
PREDECESSOR_LEAVING,
PREDECESSOR_ALIVE,
PREDECESSOR_ALIVE_ANSWER
-} e_message_type_t;
+};
class ChordMessage {
public:
public:
explicit Node(std::vector<std::string> args);
+ Node(const Node&) = delete;
~Node();
void join(int known_id);
void leave();
}
now = simgrid::s4u::Engine::getClock();
}
- if (comm_receive != nullptr)
- comm_receive->cancel();
- delete static_cast<ChordMessage*>(data);
+ if (comm_receive != nullptr) {
+ if (comm_receive->test())
+ delete static_cast<ChordMessage*>(data);
+ else
+ comm_receive->cancel();
+ }
// leave the ring
leave();
}