- std::vector<Host*> get_all_hosts();
- std::vector<Host*> get_filtered_hosts(const std::function<bool(Host*)>& filter);
- Host* host_by_name(const std::string& name);
- Host* host_by_name_or_null(const std::string& name);
-
- size_t get_link_count();
- std::vector<Link*> get_all_links();
- std::vector<Link*> get_filtered_links(const std::function<bool(Link*)>& filter);
- Link* link_by_name(const std::string& name);
- Link* link_by_name_or_null(const std::string& name);
+ std::vector<Host*> get_all_hosts() const;
+ std::vector<Host*> get_filtered_hosts(const std::function<bool(Host*)>& filter) const;
+ Host* host_by_name(const std::string& name) const;
+ Host* host_by_name_or_null(const std::string& name) const;
+
+ size_t get_link_count() const;
+ std::vector<Link*> get_all_links() const;
+ std::vector<Link*> get_filtered_links(const std::function<bool(Link*)>& filter) const;
+ Link* link_by_name(const std::string& name) const;
+ /**
+ * @brief Find a split-duplex link from its name.
+ * @throw std::invalid_argument if the searched link does not exist.
+ */
+ SplitDuplexLink* split_duplex_link_by_name(const std::string& name) const;
+ Link* link_by_name_or_null(const std::string& name) const;