-/* Copyright (c) 2015-2016. The SimGrid Team.
- * All rights reserved. */
+/* Copyright (c) 2015-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. */
#ifndef SIMGRID_MC_CHANNEL_HPP
#define SIMGRID_MC_CHANNEL_HPP
-#include <unistd.h>
+#include "src/mc/remote/mc_protocol.h"
#include <type_traits>
-#include "src/mc/remote/mc_protocol.h"
-
namespace simgrid {
namespace mc {
/** A channel for exchanging messages between model-checker and model-checked
*
* This abstracts away the way the messages are transferred. Currently, they
- * are sent over a (connected) `SOCK_DGRAM` socket.
+ * are sent over a (connected) `SOCK_SEQPACKET` socket.
*/
class Channel {
int socket_ = -1;
}
public:
- Channel() {}
+ Channel() = default;
explicit Channel(int sock) : socket_(sock) {}
~Channel();
int send(const void* message, size_t size) const;
int send(e_mc_message_type type) const
{
- s_mc_message message = {type};
+ s_mc_message_t message = {type};
return this->send(&message, sizeof(message));
}
+ /** @brief Send a message; returns 0 on success or errno on failure */
template <class M> typename std::enable_if<messageType<M>(), int>::type send(M const& m) const
{
return this->send(&m, sizeof(M));