-public:
- NetworkCm02Model();
- explicit NetworkCm02Model(void (*solve_fun)(lmm_system_t self));
- virtual ~NetworkCm02Model() = default;
- LinkImpl* createLink(const char* name, double bandwidth, double latency,
- e_surf_link_sharing_policy_t policy) override;
- void updateActionsStateLazy(double now, double delta) override;
- void updateActionsStateFull(double now, double delta) override;
- Action* communicate(s4u::Host* src, s4u::Host* dst, double size, double rate) override;
- virtual void gapAppend(double size, const LinkImpl* link, NetworkAction* action);
+ /** @brief Get route information (2-way) */
+ bool comm_get_route_info(const s4u::Host* src, const s4u::Host* dst, /* OUT */ double& latency,
+ std::vector<StandardLinkImpl*>& route, std::vector<StandardLinkImpl*>& back_route,
+ std::unordered_set<kernel::routing::NetZoneImpl*>& netzones) const;
+ /** @brief Create network action for this communication */
+ NetworkCm02Action* comm_action_create(s4u::Host* src, s4u::Host* dst, double size,
+ const std::vector<StandardLinkImpl*>& route, bool failed);
+ /** @brief Expand link contraint considering this new communication action */
+ void comm_action_expand_constraints(const s4u::Host* src, const s4u::Host* dst, const NetworkCm02Action* action,
+ const std::vector<StandardLinkImpl*>& route,
+ const std::vector<StandardLinkImpl*>& back_route) const;
+ /** @brief Set communication bounds for latency and bandwidth */
+ void comm_action_set_bounds(const s4u::Host* src, const s4u::Host* dst, double size, NetworkCm02Action* action,
+ const std::vector<StandardLinkImpl*>& route,
+ const std::unordered_set<kernel::routing::NetZoneImpl*>& netzones, double rate) const;
+ /** @brief Create maxmin variable in communication action */
+ void comm_action_set_variable(NetworkCm02Action* action, const std::vector<StandardLinkImpl*>& route,
+ const std::vector<StandardLinkImpl*>& back_route, bool streamed);