-/* Copyright (c) 2012, 2014-2016. The SimGrid Team.
+/* Copyright (c) 2012-2020. The SimGrid Team.
* All rights reserved. */
/* This program is free software; you can redistribute it and/or modify it
#include "s4u-dht-kademlia.hpp"
#include "simgrid/s4u.hpp"
+#include <memory>
+#include <string>
+
namespace kademlia {
class Message {
public:
unsigned int sender_id_ = 0; // Id of the guy who sent the task
unsigned int destination_id_ = 0; // Id we are trying to find, if needed.
- Answer* answer_ = nullptr; // Answer to the request made, if needed.
- simgrid::s4u::MailboxPtr answer_to_ = nullptr; // mailbox to send the answer to (if not an answer).
- char* issuer_host_name_ = nullptr; // used for logging
+ std::unique_ptr<Answer> answer_ = nullptr; // Answer to the request made, if needed.
+ simgrid::s4u::Mailbox* answer_to_ = nullptr; // mailbox to send the answer to (if not an answer).
+ std::string issuer_host_name_; // used for logging
- explicit Message(unsigned int sender_id, unsigned int destination_id, Answer* answer,
- simgrid::s4u::MailboxPtr mailbox, const char* hostname)
+ explicit Message(unsigned int sender_id, unsigned int destination_id, std::unique_ptr<Answer> answer,
+ simgrid::s4u::Mailbox* mailbox, const char* hostname)
: sender_id_(sender_id)
, destination_id_(destination_id)
- , answer_(answer)
+ , answer_(std::move(answer))
, answer_to_(mailbox)
- , issuer_host_name_(xbt_strdup(hostname))
+ , issuer_host_name_(hostname)
{
}
- explicit Message(unsigned int sender_id, unsigned int destination_id, simgrid::s4u::MailboxPtr mailbox,
+ explicit Message(unsigned int sender_id, unsigned int destination_id, simgrid::s4u::Mailbox* mailbox,
const char* hostname)
: Message(sender_id, destination_id, nullptr, mailbox, hostname)
{
}
- ~Message()
- {
- if (issuer_host_name_)
- xbt_free(issuer_host_name_);
- }
+ Message(const Message&) = delete;
+ Message& operator=(const Message&) = delete;
};
-}
+} // namespace kademlia
#endif