int main(int argc, char **argv) {
XBT_INFO("Hello s4u, I'm ready to serve");
- char *msg = recvstr(*Channel::byName("worker"));
+ char *msg = recvstr(*Mailbox::byName("worker"));
XBT_INFO("I received '%s'",msg);
XBT_INFO("I'm done. See you.");
return 1;
int main(int argc, char **argv) {
XBT_INFO("Hello s4u, I have something to send");
- sendstr(*Channel::byName("worker"),"GaBuZoMeu");
+ sendstr(*Mailbox::byName("worker"),"GaBuZoMeu");
XBT_INFO("I'm done. See you.");
return 1;
#ifndef SIMGRID_S4U_S4U_H
#define SIMGRID_S4U_S4U_H
-#include "simgrid/s4u/channel.hpp"
+#include "s4u/mailbox.hpp"
#include "simgrid/s4u/engine.hpp"
#include "simgrid/s4u/host.hpp"
#include "simgrid/s4u/process.hpp"
/* 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_S4U_CHANNEL_HPP
-#define SIMGRID_S4U_CHANNEL_HPP
+#ifndef SIMGRID_S4U_MAILBOX_HPP
+#define SIMGRID_S4U_MAILBOX_HPP
#include <boost/unordered_map.hpp>
namespace simgrid {
namespace s4u {
-/** @brief Channel
+/** @brief Mailboxes
*
* Rendez-vous point for network communications, similar to URLs on which you could post and retrieve data.
- * They are not network locations (you can post and retrieve on a given mailbox from anywhere on the network).
+ * They are not network locations: you can post and retrieve on a given mailbox from anywhere on the network.
+ * You can access any mailbox without any latency. The network delay are only related to the location of the
+ * sender and receiver.
*/
-class Channel {
+class Mailbox {
friend Process;
private:
- Channel(const char*name, smx_rdv_t inferior);
+ Mailbox(const char*name, smx_rdv_t inferior);
public:
- ~Channel();
+ ~Mailbox();
protected:
smx_rdv_t getInferior() { return p_inferior; }
public:
- /** Retrieve the channel associated to the given string */
- static Channel *byName(const char *name);
+ /** Retrieve the mailbox associated to the given string */
+ static Mailbox *byName(const char *name);
private:
std::string p_name;
smx_rdv_t p_inferior;
- static boost::unordered_map<std::string, Channel *> *channels;
+ static boost::unordered_map<std::string, Mailbox *> *channels;
};
}} // namespace simgrid::s4u
-#endif /* SIMGRID_S4U_CHANNEL_HPP */
+#endif /* SIMGRID_S4U_MAILBOX_HPP */
namespace s4u {
class Host;
-class Channel;
+class Mailbox;
/** @brief Simulation Agent
*
//void* recv(const char *mailbox);
/** Block the process until it gets a string message (to be freed after use) from the given mailbox */
- char *recvstr(Channel &chan);
+ char *recvstr(Mailbox &chan);
/** Block the process until it delivers a string message (that will be copied) to the given mailbox */
- void sendstr(Channel &chan, const char*msg);
+ void sendstr(Mailbox &chan, const char*msg);
protected:
smx_process_t getInferior() {return p_smx_process;}
/* 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. */
+#include "../../include/simgrid/s4u/mailbox.hpp"
#include "xbt/log.h"
#include "msg/msg_private.h"
#include "msg/msg_mailbox.h"
-#include "simgrid/s4u/channel.hpp"
-XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_channel,"S4U Communication Channels");
+XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_channel,"S4U Communication Mailboxes");
using namespace simgrid;
-boost::unordered_map <std::string, s4u::Channel *> *s4u::Channel::channels = new boost::unordered_map<std::string, s4u::Channel*> ();
+boost::unordered_map <std::string, s4u::Mailbox *> *s4u::Mailbox::channels = new boost::unordered_map<std::string, s4u::Mailbox*> ();
-s4u::Channel::Channel(const char*name, smx_rdv_t inferior) {
+s4u::Mailbox::Mailbox(const char*name, smx_rdv_t inferior) {
p_inferior = inferior;
channels->insert({name, this});
}
-s4u::Channel *s4u::Channel::byName(const char*name) {
- s4u::Channel * res;
+s4u::Mailbox *s4u::Mailbox::byName(const char*name) {
+ s4u::Mailbox * res;
try {
res = channels->at(name);
} catch (std::out_of_range& e) {
- res = new Channel(name,simcall_rdv_create(name));
+ res = new Mailbox(name,simcall_rdv_create(name));
}
return res;
}
/* 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. */
+#include "../../include/simgrid/s4u/mailbox.hpp"
#include "xbt/log.h"
#include "msg/msg_private.h"
#include "msg/msg_mailbox.h"
#include "simgrid/s4u/host.hpp"
#include "simgrid/s4u/process.hpp"
-#include "simgrid/s4u/channel.hpp"
XBT_LOG_NEW_DEFAULT_CATEGORY(s4u_process,"S4U processes");
simcall_process_execute(NULL,flops,1.0/*priority*/,0./*bound*/, 0L/*affinity*/);
}
-char *s4u::Process::recvstr(Channel &chan) {
+char *s4u::Process::recvstr(Mailbox &chan) {
char *res=NULL;
size_t res_size=sizeof(res);
return res;
}
-void s4u::Process::sendstr(Channel &chan, const char*msg) {
+void s4u::Process::sendstr(Mailbox &chan, const char*msg) {
char *msg_cpy=xbt_strdup(msg);
smx_synchro_t comm = simcall_comm_isend(p_smx_process, chan.getInferior(), strlen(msg),
-1/*rate*/, msg_cpy, sizeof(void *),
endif()
set(S4U_SRC
- src/s4u/s4u_channel.cpp
src/s4u/s4u_engine.cpp
src/s4u/s4u_host.cpp
+ src/s4u/s4u_mailbox.cpp
src/s4u/s4u_process.cpp
)
include/simgrid/simix.h
include/simgrid/host.h
include/simgrid/link.h
- include/simgrid/s4u/channel.hpp
include/simgrid/s4u/engine.hpp
include/simgrid/s4u/host.hpp
+ include/simgrid/s4u/mailbox.hpp
include/simgrid/s4u/process.hpp
include/simgrid/s4u.h
include/smpi/mpi.h