void route_to(const Host* dest, std::vector<Link*>& links, double* latency) const;
void route_to(const Host* dest, std::vector<kernel::resource::LinkImpl*>& links, double* latency) const;
- void send_to(Host* dest, double byte_amount);
+ /** Do a blocking communication between two arbitrary hosts.
+ *
+ * This starts a blocking communication right away, bypassing the mailbox and actors mechanism.
+ * The calling actor is blocked until the end of the communication; there is really no limit on the hosts involved.
+ * In particular, the actor does not have to be on one of the involved hosts. Enjoy the comfort of the simulator :)
+ */
+ void sendto(Host* dest, double byte_amount);
+
+ /** Do an asynchronous communication between two arbitrary hosts.
+ *
+ * This initializes a communication that completely bypass the mailbox and actors mechanism.
+ * There is really no limit on the hosts involved. In particular, the actor does not have to be on one of the involved
+ * hosts.
+ */
+ ActivityPtr sendto_async(Host* dest, double byte_amount);
+
+#ifndef DOXYGEN
+ XBT_ATTRIB_DEPRECATED_v330("Please use Host::sendto()") void send_to(Host* dest, double byte_amount)
+ {
+ sendto(dest, byte_amount);
+ }
+#endif
NetZone* get_englobing_zone();
/** Block the calling actor on an execution located on the called host
* It is not a problem if the actor is not located on the called host.
* The actor will not be migrated in this case. Such remote execution are easy in simulation.
*/
- void execute(double flops);
+ void execute(double flops) const;
/** Start an asynchronous computation on that host (possibly remote) */
- ExecPtr exec_async(double flops_amounts);
+ ExecPtr exec_async(double flops_amounts) const;
/** Block the calling actor on an execution located on the called host (with explicit priority) */
- void execute(double flops, double priority);
+ void execute(double flops, double priority) const;
private:
xbt::string name_{"noname"};