-/* Copyright (c) 2016-2017. The SimGrid Team. All rights reserved. */
+/* Copyright (c) 2016-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. */
explicit HostChord(simgrid::s4u::Host* ptr) : host(ptr)
{
- std::string descr = std::string("RngSream<") + host->getCname() + ">";
+ std::string descr = std::string("RngSream<") + host->get_cname() + ">";
stream_ = RngStream_CreateStream(descr.c_str());
}
};
/* 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:
simgrid::s4u::MailboxPtr answer_to; // mailbox to send an answer to (if any)
explicit ChordMessage(e_message_type_t type)
- : type(type), issuer_host_name(simgrid::s4u::this_actor::getHost()->getName())
+ : type(type), issuer_host_name(simgrid::s4u::this_actor::get_host()->get_name())
{
}
public:
explicit Node(std::vector<std::string> args);
+ Node(const Node&) = delete;
+ Node& operator=(const Node&) = delete;
~Node();
void join(int known_id);
void leave();
}
now = simgrid::s4u::Engine::getClock();
}
- 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();
}