1 /* Copyright (c) 2015-2022. The SimGrid Team.
2 * All rights reserved. */
4 /* This program is free software; you can redistribute it and/or modify it
5 * under the terms of the license (GNU LGPL) which comes with this package. */
7 #ifndef SIMGRID_MC_TRANSITION_COMM_HPP
8 #define SIMGRID_MC_TRANSITION_COMM_HPP
10 #include "src/kernel/actor/SimcallObserver.hpp"
11 #include "src/mc/api/Transition.hpp"
18 class CommRecvTransition;
19 class CommSendTransition;
20 class CommTestTransition;
22 class CommWaitTransition : public Transition {
31 friend CommRecvTransition;
32 friend CommSendTransition;
33 friend CommTestTransition;
36 CommWaitTransition(aid_t issuer, int times_considered, char* buffer);
37 std::string to_string(bool verbose) const override;
38 bool depends(const Transition* other) const override;
40 class CommTestTransition : public Transition {
48 friend CommSendTransition;
49 friend CommRecvTransition;
52 CommTestTransition(aid_t issuer, int times_considered, char* buffer);
53 std::string to_string(bool verbose) const override;
54 bool depends(const Transition* other) const override;
57 class CommRecvTransition : public Transition {
62 CommRecvTransition(aid_t issuer, int times_considered, char* buffer);
63 std::string to_string(bool verbose) const override;
64 bool depends(const Transition* other) const override;
67 class CommSendTransition : public Transition {
73 CommSendTransition(aid_t issuer, int times_considered, char* buffer);
74 std::string to_string(bool verbose) const override;
75 bool depends(const Transition* other) const override;
78 /** Make a new transition from serialized description */
79 Transition* recv_transition(aid_t issuer, int times_considered, Transition::Type simcall, char* buffer);
82 } // namespace simgrid