{
  "version": 1,
  "symbols": [
    {
      "kind": "free_function",
      "qualified": "dofs::log_error",
      "signature": "void log_error(std::string_view type, std::string_view message, std::optional<uint64_t> timestamp = std::nullopt) noexcept;",
      "file": "src/core/error.h",
      "line": 13,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "DOFS_ERROR",
      "signature": "#define DOFS_ERROR(TYPE, MSG)",
      "file": "src/core/error.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "DOFS_ERROR_T",
      "signature": "#define DOFS_ERROR_T(TYPE, MSG, TS)",
      "file": "src/core/error.h",
      "line": 37,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "DOFS_ERROR_ST",
      "signature": "#define DOFS_ERROR_ST(TYPE, SRC, MSG, TS)",
      "file": "src/core/error.h",
      "line": 40,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "DOFS_SHOW",
      "signature": "#define DOFS_SHOW(VAR)",
      "file": "src/core/error.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "DOFS_EVAL",
      "signature": "#define DOFS_EVAL(EXPR)",
      "file": "src/core/error.h",
      "line": 46,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "macro",
      "qualified": "FORMAT",
      "signature": "#define FORMAT(VAR)",
      "file": "src/core/error.h",
      "line": 49,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Host::Host",
      "signature": "Host(Simulator *const sim, NodeId id) noexcept",
      "file": "src/core/host.h",
      "line": 16,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "Host::~Host",
      "signature": "virtual ~Host() = default",
      "file": "src/core/host.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::nic",
      "signature": "NetworkNic *nic() const noexcept",
      "file": "src/core/host.h",
      "line": 20,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::attach_nic",
      "signature": "void attach_nic(NetworkNic *nic) noexcept;",
      "file": "src/core/host.h",
      "line": 23,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::attach_nic",
      "signature": "void attach_nic(NetworkNic *nic) noexcept",
      "file": "src/core/host.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::detach_nic",
      "signature": "void detach_nic(NetworkNic *nic) noexcept",
      "file": "src/core/host.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::detach_nic",
      "signature": "void detach_nic(NetworkNic *nic) noexcept;",
      "file": "src/core/host.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::recv_flow",
      "signature": "virtual void recv_flow(NodeId src, FlowId flow, FlowPriority priority, Bytes flow_size) = 0",
      "file": "src/core/host.h",
      "line": 29,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::recv_frame",
      "signature": "virtual void recv_frame(const Packet &frame) = 0",
      "file": "src/core/host.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::recv_mgmt_msg",
      "signature": "virtual void recv_mgmt_msg(std::unique_ptr<struct MgmtMsg> msg) = 0",
      "file": "src/core/host.h",
      "line": 37,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Host::Host",
      "signature": "Host(const Host &) = delete",
      "file": "src/core/host.h",
      "line": 39,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Host::operator=",
      "signature": "Host &operator=(const Host &) = delete",
      "file": "src/core/host.h",
      "line": 40,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Logger::Logger",
      "signature": "Logger(std::string_view path, bool append) noexcept",
      "file": "src/core/logger.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "Logger::~Logger",
      "signature": "~Logger() noexcept",
      "file": "src/core/logger.h",
      "line": 22,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Logger::Logger",
      "signature": "Logger(const Logger &) = delete",
      "file": "src/core/logger.h",
      "line": 24,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::operator=",
      "signature": "Logger &operator=(const Logger &) = delete",
      "file": "src/core/logger.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Logger::Logger",
      "signature": "Logger(Logger &&) = delete",
      "file": "src/core/logger.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::operator=",
      "signature": "Logger &operator=(Logger &&) = delete",
      "file": "src/core/logger.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::is_open",
      "signature": "bool is_open() const noexcept",
      "file": "src/core/logger.h",
      "line": 29,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::write_line",
      "signature": "void write_line(std::string_view line) noexcept;",
      "file": "src/core/logger.h",
      "line": 32,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::write_line",
      "signature": "void write_line(std::string_view line) noexcept",
      "file": "src/core/logger.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::flush",
      "signature": "void flush() noexcept;",
      "file": "src/core/logger.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::flush",
      "signature": "void flush() noexcept",
      "file": "src/core/logger.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::close",
      "signature": "void close() noexcept",
      "file": "src/core/logger.h",
      "line": 36,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::close",
      "signature": "void close() noexcept;",
      "file": "src/core/logger.h",
      "line": 36,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Logger::path",
      "signature": "std::string_view path() const noexcept",
      "file": "src/core/logger.h",
      "line": 38,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "open",
      "signature": "private: bool open(std::ios::openmode mode) noexcept;",
      "file": "src/core/logger.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Node::Node",
      "signature": "Node(Simulator *const sim, NodeId id, NodeType type) noexcept",
      "file": "src/core/node.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "Node::~Node",
      "signature": "virtual ~Node() = default",
      "file": "src/core/node.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::id",
      "signature": "NodeId id() const noexcept",
      "file": "src/core/node.h",
      "line": 17,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::status",
      "signature": "NodeStatus status() const noexcept",
      "file": "src/core/node.h",
      "line": 18,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::type",
      "signature": "NodeType type() const noexcept",
      "file": "src/core/node.h",
      "line": 19,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::set_status",
      "signature": "void set_status(NodeStatus s) noexcept",
      "file": "src/core/node.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::boot",
      "signature": "void boot(Time boottime_ns)",
      "file": "src/core/node.h",
      "line": 23,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::reboot",
      "signature": "void reboot(Time boottime_ns)",
      "file": "src/core/node.h",
      "line": 24,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Node::Node",
      "signature": "Node(const Node &) = delete",
      "file": "src/core/node.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Node::operator=",
      "signature": "Node &operator=(const Node &) = delete",
      "file": "src/core/node.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Rng::Rng",
      "signature": "explicit Rng(seed_type seed = default_seed()) noexcept : _eng(seed)",
      "file": "src/core/rng.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::seed",
      "signature": "void seed(seed_type s) noexcept{",
      "file": "src/core/rng.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::seed",
      "signature": "void seed(seed_type s) noexcept",
      "file": "src/core/rng.h",
      "line": 22,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "uniform01",
      "signature": "double uniform01(){",
      "file": "src/core/rng.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::uniform01",
      "signature": "double uniform01()",
      "file": "src/core/rng.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::uniform_range",
      "signature": "template<typename Int, typename = std::enable_if_t<std::is_integral<Int>::value>> Int uniform_range(Int lo_inclusive, Int hi_exclusive)",
      "file": "src/core/rng.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<typename Int,\n                  typename = std::enable_if_t<std::is_integral<Int>::value>>"
    },
    {
      "kind": "free_function",
      "qualified": "uniform_range",
      "signature": "Int uniform_range(Int lo_inclusive, Int hi_exclusive){",
      "file": "src/core/rng.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::uniform_range",
      "signature": "template<typename Int, typename = std::enable_if_t<std::is_integral<Int>::value>> Int uniform_range(Int hi_exclusive)",
      "file": "src/core/rng.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<typename Int,\n                  typename = std::enable_if_t<std::is_integral<Int>::value>>"
    },
    {
      "kind": "free_function",
      "qualified": "uniform_range",
      "signature": "Int uniform_range(Int hi_exclusive){",
      "file": "src/core/rng.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "uniform_range",
      "signature": "double uniform_range(double lo_inclusive, double hi_exclusive){",
      "file": "src/core/rng.h",
      "line": 44,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::uniform_range",
      "signature": "double uniform_range(double lo_inclusive, double hi_exclusive)",
      "file": "src/core/rng.h",
      "line": 45,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "poisson",
      "signature": "std::uint64_t poisson(double lambda){",
      "file": "src/core/rng.h",
      "line": 49,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::poisson",
      "signature": "std::uint64_t poisson(double lambda)",
      "file": "src/core/rng.h",
      "line": 50,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "choose_weighted",
      "signature": "template <typename T> T choose_weighted(const std::vector<std::pair<double, T>> &items){",
      "file": "src/core/rng.h",
      "line": 54,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::choose_weighted",
      "signature": "template<typename T> T choose_weighted(const std::vector<std::pair<double, T>> &items)",
      "file": "src/core/rng.h",
      "line": 56,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<typename T>"
    },
    {
      "kind": "free_function",
      "qualified": "choose_weighted_impl",
      "signature": "return choose_weighted_impl(items.begin(), items.end());",
      "file": "src/core/rng.h",
      "line": 57,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "choose_weighted",
      "signature": "template <typename T> T choose_weighted(std::initializer_list<std::pair<double, T>> items){",
      "file": "src/core/rng.h",
      "line": 59,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Rng::choose_weighted",
      "signature": "template<typename T> T choose_weighted(std::initializer_list<std::pair<double, T>> items)",
      "file": "src/core/rng.h",
      "line": 61,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<typename T>"
    },
    {
      "kind": "free_function",
      "qualified": "choose_weighted_impl",
      "signature": "return choose_weighted_impl(items.begin(), items.end());",
      "file": "src/core/rng.h",
      "line": 62,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "default_seed",
      "signature": "static constexpr seed_type default_seed() noexcept{",
      "file": "src/core/rng.h",
      "line": 66,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "choose_weighted_impl",
      "signature": "template <typename Iter> auto choose_weighted_impl(Iter first, Iter last) -> typename std::iterator_traits<Iter>::value_type::second_type{",
      "file": "src/core/rng.h",
      "line": 71,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::Cmp::operator",
      "signature": "bool operator()(const Item &a, const Item &b) const noexcept",
      "file": "src/core/simulator.h",
      "line": 43,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Simulator::Simulator",
      "signature": "Simulator() = default",
      "file": "src/core/simulator.h",
      "line": 58,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::create_simulator",
      "signature": "static std::pair<InstanceId, Simulator *> create_simulator(InstanceId id)",
      "file": "src/core/simulator.h",
      "line": 60,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::get_simulator",
      "signature": "static Simulator *get_simulator(InstanceId id) noexcept",
      "file": "src/core/simulator.h",
      "line": 61,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::now",
      "signature": "Time now() const noexcept",
      "file": "src/core/simulator.h",
      "line": 63,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::schedule_at",
      "signature": "template<class F, class... Args> EventId schedule_at(Time abs_time, F&&f, Args&&... args)",
      "file": "src/core/simulator.h",
      "line": 66,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<class F, class... Args>"
    },
    {
      "kind": "method",
      "qualified": "Simulator::schedule_after",
      "signature": "template<class F, class... Args> EventId schedule_after(Time delay, F&&f, Args&&... args)",
      "file": "src/core/simulator.h",
      "line": 84,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": "template<class F, class... Args>"
    },
    {
      "kind": "free_function",
      "qualified": "cancel",
      "signature": "bool cancel(EventId id);",
      "file": "src/core/simulator.h",
      "line": 88,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::cancel",
      "signature": "bool cancel(EventId id)",
      "file": "src/core/simulator.h",
      "line": 89,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::run_next",
      "signature": "bool run_next()",
      "file": "src/core/simulator.h",
      "line": 90,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "run_next",
      "signature": "bool run_next();",
      "file": "src/core/simulator.h",
      "line": 90,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::run_until",
      "signature": "void run_until(Time end_time)",
      "file": "src/core/simulator.h",
      "line": 91,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "run_until",
      "signature": "void run_until(Time end_time);",
      "file": "src/core/simulator.h",
      "line": 91,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "lock",
      "signature": "void lock() noexcept;",
      "file": "src/core/simulator.h",
      "line": 92,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::lock",
      "signature": "void lock() noexcept",
      "file": "src/core/simulator.h",
      "line": 95,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::is_locked",
      "signature": "bool is_locked() const noexcept",
      "file": "src/core/simulator.h",
      "line": 96,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "flush_after",
      "signature": "void flush_after(Time grace) noexcept;",
      "file": "src/core/simulator.h",
      "line": 99,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::flush_after",
      "signature": "void flush_after(Time grace) noexcept",
      "file": "src/core/simulator.h",
      "line": 100,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::create_rng",
      "signature": "Rng *create_rng(std::uint64_t seed)",
      "file": "src/core/simulator.h",
      "line": 103,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::get_rng",
      "signature": "Rng *get_rng() noexcept",
      "file": "src/core/simulator.h",
      "line": 104,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::get_rng",
      "signature": "Rng const *get_rng() const noexcept",
      "file": "src/core/simulator.h",
      "line": 105,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::create_link",
      "signature": "std::pair<LinkId, Link *> create_link(NetworkNode *a, PortId a_port, NetworkNode *b, PortId b_port, Time latency, double bandwidth_gbps)",
      "file": "src/core/simulator.h",
      "line": 107,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::get_link",
      "signature": "Link *get_link(LinkId id) noexcept",
      "file": "src/core/simulator.h",
      "line": 112,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Simulator::get_link",
      "signature": "Link const *get_link(LinkId id) const noexcept",
      "file": "src/core/simulator.h",
      "line": 113,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Time::Time",
      "signature": "constexpr Time() : _nsec(0)",
      "file": "src/core/time.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Time::Time",
      "signature": "explicit constexpr Time(rep ns) : _nsec(ns)",
      "file": "src/core/time.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "from_ns",
      "signature": "static constexpr Time from_ns(rep ns) noexcept{",
      "file": "src/core/time.h",
      "line": 16,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::from_ns",
      "signature": "static constexpr Time from_ns(rep ns) noexcept",
      "file": "src/core/time.h",
      "line": 18,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(ns);",
      "file": "src/core/time.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::from_us",
      "signature": "static constexpr Time from_us(rep us) noexcept",
      "file": "src/core/time.h",
      "line": 21,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "from_us",
      "signature": "static constexpr Time from_us(rep us) noexcept{",
      "file": "src/core/time.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(us * 1000ULL);",
      "file": "src/core/time.h",
      "line": 22,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::from_ms",
      "signature": "static constexpr Time from_ms(rep ms) noexcept",
      "file": "src/core/time.h",
      "line": 24,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "from_ms",
      "signature": "static constexpr Time from_ms(rep ms) noexcept{",
      "file": "src/core/time.h",
      "line": 24,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(ms * 1000ULL * 1000ULL);",
      "file": "src/core/time.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::from_s",
      "signature": "static constexpr Time from_s (rep s ) noexcept",
      "file": "src/core/time.h",
      "line": 27,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "from_s",
      "signature": "static constexpr Time from_s (rep s ) noexcept{",
      "file": "src/core/time.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(s * 1000ULL * 1000ULL * 1000ULL);",
      "file": "src/core/time.h",
      "line": 28,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::ns",
      "signature": "constexpr rep ns() const noexcept",
      "file": "src/core/time.h",
      "line": 32,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::count",
      "signature": "constexpr rep count() const noexcept",
      "file": "src/core/time.h",
      "line": 35,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "us_to_ns",
      "signature": "static constexpr rep us_to_ns(rep us) noexcept{",
      "file": "src/core/time.h",
      "line": 38,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::us_to_ns",
      "signature": "static constexpr rep us_to_ns(rep us) noexcept",
      "file": "src/core/time.h",
      "line": 40,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Time::ms_to_ns",
      "signature": "static constexpr rep ms_to_ns(rep ms) noexcept",
      "file": "src/core/time.h",
      "line": 43,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "ms_to_ns",
      "signature": "static constexpr rep ms_to_ns(rep ms) noexcept{",
      "file": "src/core/time.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(a._nsec + b._nsec);",
      "file": "src/core/time.h",
      "line": 87,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(a._nsec * b._nsec);",
      "file": "src/core/time.h",
      "line": 91,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "safe_sub",
      "signature": "return safe_sub(a, b);",
      "file": "src/core/time.h",
      "line": 95,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "safe_sub",
      "signature": "friend constexpr std::optional<Time> safe_sub(Time a, Time b) noexcept{",
      "file": "src/core/time.h",
      "line": 97,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(a._nsec - b._nsec);",
      "file": "src/core/time.h",
      "line": 102,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "Time",
      "signature": "return Time(this->_nsec - t._nsec);",
      "file": "src/core/time.h",
      "line": 107,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "_ns",
      "signature": "constexpr Time operator _ns(unsigned long long v) noexcept{",
      "file": "src/core/time.h",
      "line": 112,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "_us",
      "signature": "constexpr Time operator _us(unsigned long long v) noexcept{",
      "file": "src/core/time.h",
      "line": 117,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "_ms",
      "signature": "constexpr Time operator _ms(unsigned long long v) noexcept{",
      "file": "src/core/time.h",
      "line": 120,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "_s",
      "signature": "constexpr Time operator _s (unsigned long long v) noexcept{",
      "file": "src/core/time.h",
      "line": 123,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Timer::Timer",
      "signature": "Timer()",
      "file": "src/core/timer.h",
      "line": 11,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::init",
      "signature": "void init() noexcept{",
      "file": "src/core/timer.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Timer::init",
      "signature": "void init() noexcept",
      "file": "src/core/timer.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Timer::start",
      "signature": "Time start() const noexcept",
      "file": "src/core/timer.h",
      "line": 19,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Timer::now",
      "signature": "Time now() const noexcept",
      "file": "src/core/timer.h",
      "line": 29,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Timer::elapsed",
      "signature": "Time elapsed() const noexcept",
      "file": "src/core/timer.h",
      "line": 39,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::ipv4",
      "signature": "inline IPv4Addr ipv4(NodeId n, PortId p) noexcept{",
      "file": "src/core/types.h",
      "line": 30,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "MgmtMsg::~MgmtMsg",
      "signature": "virtual ~MgmtMsg() = default",
      "file": "src/hosts/mgmt_msg.h",
      "line": 12,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "MgmtMsg::kind",
      "signature": "virtual MgmtKind kind() const noexcept = 0",
      "file": "src/hosts/mgmt_msg.h",
      "line": 13,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "HeartbeatMsg::HeartbeatMsg",
      "signature": "explicit HeartbeatMsg(NodeId sid, NodeStatus st, Time t) noexcept : subscriber_id(sid), status(st), generated_at(t)",
      "file": "src/hosts/mgmt_msg.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "HeartbeatMsg::kind",
      "signature": "MgmtKind kind() const noexcept override",
      "file": "src/hosts/mgmt_msg.h",
      "line": 24,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "JobFinishedMsg::JobFinishedMsg",
      "signature": "explicit JobFinishedMsg(FlowId fid, Time t) noexcept : flow_id(fid), finished_at(t)",
      "file": "src/hosts/mgmt_msg.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "JobFinishedMsg::kind",
      "signature": "MgmtKind kind() const noexcept override",
      "file": "src/hosts/mgmt_msg.h",
      "line": 36,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "EndSimulationMsg::kind",
      "signature": "MgmtKind kind() const noexcept override",
      "file": "src/hosts/mgmt_msg.h",
      "line": 42,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "PubBasePolicy::~PubBasePolicy",
      "signature": "virtual ~PubBasePolicy() = default",
      "file": "src/hosts/policies.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "PubBasePolicy::select_multicast_groups",
      "signature": "virtual PacketGroups select_multicast_groups(PacketGroups update_groups_mask) = 0",
      "file": "src/hosts/policies.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "PubRRPolicy::PubRRPolicy",
      "signature": "explicit PubRRPolicy(std::vector<ReplicaRange> ranges) : _ranges(std::move(ranges))",
      "file": "src/hosts/policies.h",
      "line": 28,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "PubRRPolicy::select_multicast_groups",
      "signature": "PacketGroups select_multicast_groups(PacketGroups update_groups_mask) override",
      "file": "src/hosts/policies.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "group_present",
      "signature": "static bool group_present(PacketGroups mask, uint32_t gid) noexcept{",
      "file": "src/hosts/policies.h",
      "line": 52,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "validate_and_build",
      "signature": "void validate_and_build(){",
      "file": "src/hosts/policies.h",
      "line": 61,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Publisher::Publisher",
      "signature": "Publisher(Simulator *sim, NodeId id, Time update_latency_base, std::unique_ptr<PubBasePolicy> policy, Time mgmt_latency) noexcept",
      "file": "src/hosts/publisher.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::recv_update",
      "signature": "void recv_update(Bytes size, PacketGroups update_groups_mask) noexcept",
      "file": "src/hosts/publisher.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::set_status",
      "signature": "void set_status(NodeStatus s, Time new_latency = Time{}) noexcept",
      "file": "src/hosts/publisher.h",
      "line": 29,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::recv_mgmt_msg",
      "signature": "virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override",
      "file": "src/hosts/publisher.h",
      "line": 32,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::recv_flow",
      "signature": "virtual void recv_flow(NodeId src, FlowId flow, FlowPriority prio, Bytes flow_size) override",
      "file": "src/hosts/publisher.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::recv_frame",
      "signature": "virtual void recv_frame(const Packet &frame) override",
      "file": "src/hosts/publisher.h",
      "line": 37,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::updates_in",
      "signature": "uint64_t updates_in() const noexcept",
      "file": "src/hosts/publisher.h",
      "line": 40,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::bytes_out",
      "signature": "uint64_t bytes_out() const noexcept",
      "file": "src/hosts/publisher.h",
      "line": 43,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "arm_staging_if_needed",
      "signature": "void arm_staging_if_needed() noexcept;",
      "file": "src/hosts/publisher.h",
      "line": 54,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::Pending::arm_staging_if_needed",
      "signature": "void arm_staging_if_needed() noexcept",
      "file": "src/hosts/publisher.h",
      "line": 56,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Publisher::Pending::on_staging_timer",
      "signature": "void on_staging_timer() noexcept",
      "file": "src/hosts/publisher.h",
      "line": 57,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "on_staging_timer",
      "signature": "void on_staging_timer() noexcept;",
      "file": "src/hosts/publisher.h",
      "line": 57,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Subscriber::Subscriber",
      "signature": "Subscriber(Simulator *sim, NodeId id, Publisher *publisher, std::unique_ptr<SubBasePolicy> policy, Time mgmt_latency, Time heartbeat_period) noexcept",
      "file": "src/hosts/subscriber.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Subscriber::recv_mgmt_msg",
      "signature": "virtual void recv_mgmt_msg(MgmtMsgPtr msg) noexcept override",
      "file": "src/hosts/subscriber.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Subscriber::recv_flow",
      "signature": "void recv_flow(NodeId src, FlowId flow, FlowPriority prio, Bytes flow_size) override",
      "file": "src/hosts/subscriber.h",
      "line": 28,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Subscriber::recv_frame",
      "signature": "void recv_frame(const Packet &frame) override",
      "file": "src/hosts/subscriber.h",
      "line": 30,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Subscriber::set_status",
      "signature": "void set_status(NodeStatus s) noexcept",
      "file": "src/hosts/subscriber.h",
      "line": 32,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Subscriber::set_publisher",
      "signature": "void set_publisher(Publisher *p) noexcept",
      "file": "src/hosts/subscriber.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::schedule_next_heartbeat",
      "signature": "void schedule_next_heartbeat(Time delay) noexcept;",
      "file": "src/hosts/subscriber.h",
      "line": 40,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::on_heartbeat_timer",
      "signature": "void on_heartbeat_timer() noexcept;",
      "file": "src/hosts/subscriber.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::send_job_finished",
      "signature": "void send_job_finished(FlowId flow) noexcept;",
      "file": "src/hosts/subscriber.h",
      "line": 44,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Link::Link",
      "signature": "Link(Simulator *const sim, LinkId id, NetworkNode *a, PortId a_port, NetworkNode *b, PortId b_port, Time latency, double bandwidth_gbps) noexcept",
      "file": "src/network/link.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::send_pkt",
      "signature": "void send_pkt(Packet &pkt, NodeId caller)",
      "file": "src/network/link.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::schedule_delivery_after",
      "signature": "void schedule_delivery_after(Packet &pkt, NodeId caller, Time after)",
      "file": "src/network/link.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::next_available",
      "signature": "Time next_available(NodeId sender) const noexcept",
      "file": "src/network/link.h",
      "line": 45,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::reserve",
      "signature": "std::optional<Reservation> reserve(Bytes bytes, NodeId sender) noexcept",
      "file": "src/network/link.h",
      "line": 47,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::serialization_time",
      "signature": "Time serialization_time(Bytes bytes) const noexcept",
      "file": "src/network/link.h",
      "line": 49,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::propagation_latency",
      "signature": "Time propagation_latency() const noexcept",
      "file": "src/network/link.h",
      "line": 53,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::id",
      "signature": "LinkId id() const noexcept",
      "file": "src/network/link.h",
      "line": 57,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::status",
      "signature": "LinkStatus status() const noexcept",
      "file": "src/network/link.h",
      "line": 60,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::bandwidth_gbps",
      "signature": "double bandwidth_gbps() const noexcept",
      "file": "src/network/link.h",
      "line": 63,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::src_id",
      "signature": "NodeId src_id() const noexcept",
      "file": "src/network/link.h",
      "line": 68,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::dst_id",
      "signature": "NodeId dst_id() const noexcept",
      "file": "src/network/link.h",
      "line": 71,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::src_port",
      "signature": "PortId src_port() const noexcept",
      "file": "src/network/link.h",
      "line": 74,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::dst_port",
      "signature": "PortId dst_port() const noexcept",
      "file": "src/network/link.h",
      "line": 77,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "set_status",
      "signature": "void set_status(LinkStatus s, Time new_latency = Time(0), double new_bandwidth_gbps = 0.0);",
      "file": "src/network/link.h",
      "line": 80,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::set_status",
      "signature": "void set_status(LinkStatus s, Time new_latency = Time(0), double new_bandwidth_gbps = 0.0)",
      "file": "src/network/link.h",
      "line": 86,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "serialization_time",
      "signature": "static Time serialization_time(Bytes bytes, double gbps) noexcept;",
      "file": "src/network/link.h",
      "line": 89,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Link::serialization_time",
      "signature": "static Time serialization_time(Bytes bytes, double gbps) noexcept",
      "file": "src/network/link.h",
      "line": 90,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "NicSchedulingWeights::NetworkNic::NetworkNic",
      "signature": "NetworkNic(Simulator *const sim, NodeId id, uint16_t total_ports, SwitchBuffer *const buf, Time nic_latency, Bytes mice_elephant_threshold, PacketSeq ooo_threshold, CCType cc_type, LBType lb_type, Bytes cc_init_cwnd, Bytes cc_max_cwnd, const NicSchedulingWeights &schedw) noexcept",
      "file": "src/network/network_nic.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::recv_pkt",
      "signature": "virtual void recv_pkt(Packet &pkt, PortId ingress) override",
      "file": "src/network/network_nic.h",
      "line": 46,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::attach_host",
      "signature": "void attach_host(Host *host) noexcept",
      "file": "src/network/network_nic.h",
      "line": 48,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::detach_host",
      "signature": "void detach_host(Host *host) noexcept",
      "file": "src/network/network_nic.h",
      "line": 49,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::send_flow",
      "signature": "void send_flow(NodeId dst, Bytes size, FlowPriority desired = FlowPriority::AUTO)",
      "file": "src/network/network_nic.h",
      "line": 52,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::send_flow",
      "signature": "void send_flow(PacketGroups group_mask, Bytes size, FlowPriority desired = FlowPriority::AUTO)",
      "file": "src/network/network_nic.h",
      "line": 54,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::set_status",
      "signature": "void set_status(NodeStatus s, Time new_latency = Time(0)) noexcept",
      "file": "src/network/network_nic.h",
      "line": 57,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::telemetry",
      "signature": "const NicTelemetry &telemetry() const noexcept",
      "file": "src/network/network_nic.h",
      "line": 59,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "set_port_blacklisted",
      "signature": "void set_port_blacklisted(PortId port, bool blacklisted) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 62,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::set_port_blacklisted",
      "signature": "void set_port_blacklisted(PortId port, bool blacklisted) noexcept",
      "file": "src/network/network_nic.h",
      "line": 63,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::is_port_blacklisted",
      "signature": "bool is_port_blacklisted(PortId port) const noexcept",
      "file": "src/network/network_nic.h",
      "line": 64,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "schedule_port_if_needed",
      "signature": "void schedule_port_if_needed(PortId port) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 81,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::schedule_port_if_needed",
      "signature": "void schedule_port_if_needed(PortId port) noexcept",
      "file": "src/network/network_nic.h",
      "line": 83,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::port_drain_task",
      "signature": "void port_drain_task(PortId port) noexcept",
      "file": "src/network/network_nic.h",
      "line": 84,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "port_drain_task",
      "signature": "void port_drain_task(PortId port) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 84,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::pick_next_qclass",
      "signature": "bool pick_next_qclass(const PortQueues &pq, QClass &out_cls) const noexcept",
      "file": "src/network/network_nic.h",
      "line": 86,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "try_send_one",
      "signature": "bool try_send_one(PortId port, QClass cls) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 86,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::try_send_one",
      "signature": "bool try_send_one(PortId port, QClass cls) noexcept",
      "file": "src/network/network_nic.h",
      "line": 88,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "enqueue_packet",
      "signature": "void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 89,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::enqueue_packet",
      "signature": "void enqueue_packet(PortId port, QClass cls, Packet pkt) noexcept",
      "file": "src/network/network_nic.h",
      "line": 90,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "schedule_ack",
      "signature": "void schedule_ack(const Packet &rx_data, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 91,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::schedule_ack",
      "signature": "void schedule_ack(const Packet &rx_data, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 92,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::schedule_nack",
      "signature": "void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 93,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "schedule_nack",
      "signature": "void schedule_nack(NodeId peer, FlowId flow, PacketSeq missing_seq, FlowPriority prio, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 93,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::schedule_trim_back_response",
      "signature": "void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 95,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "schedule_trim_back_response",
      "signature": "void schedule_trim_back_response(const Packet &trim, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 95,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::is_elephant",
      "signature": "bool is_elephant(Bytes sz) const noexcept",
      "file": "src/network/network_nic.h",
      "line": 97,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "txkey",
      "signature": "static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 97,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::txkey",
      "signature": "static inline std::uint64_t txkey(FlowId f, PacketSeq s) noexcept",
      "file": "src/network/network_nic.h",
      "line": 99,
      "static": true,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "record_tx_timestamp",
      "signature": "void record_tx_timestamp(const Packet &pkt) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 100,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::record_tx_timestamp",
      "signature": "void record_tx_timestamp(const Packet &pkt) noexcept",
      "file": "src/network/network_nic.h",
      "line": 101,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::lookup_rtt_and_erase",
      "signature": "bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept",
      "file": "src/network/network_nic.h",
      "line": 102,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "lookup_rtt_and_erase",
      "signature": "bool lookup_rtt_and_erase(const Packet &ack_like, Time now, Time &out_rtt) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 102,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "pick_src_port_for_flow",
      "signature": "PortId pick_src_port_for_flow(NodeId dst) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 104,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::pick_src_port_for_flow",
      "signature": "PortId pick_src_port_for_flow(NodeId dst) noexcept",
      "file": "src/network/network_nic.h",
      "line": 105,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "start_tx_unicast",
      "signature": "void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio);",
      "file": "src/network/network_nic.h",
      "line": 106,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::start_tx_unicast",
      "signature": "void start_tx_unicast(NodeId dst, Bytes size, FlowPriority prio)",
      "file": "src/network/network_nic.h",
      "line": 107,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::start_tx_multicast",
      "signature": "void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio)",
      "file": "src/network/network_nic.h",
      "line": 108,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "start_tx_multicast",
      "signature": "void start_tx_multicast(PacketGroups gmask, Bytes size, FlowPriority prio);",
      "file": "src/network/network_nic.h",
      "line": 108,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "make_data_packet",
      "signature": "Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 109,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::make_data_packet",
      "signature": "Packet make_data_packet(NodeId dst, PortId out_port, FlowPriority prio, FlowId fid, PacketSeq seq, Bytes payload) noexcept",
      "file": "src/network/network_nic.h",
      "line": 110,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::make_ack_packet",
      "signature": "Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 112,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "make_ack_packet",
      "signature": "Packet make_ack_packet(const Packet &rx_data, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 112,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::make_nack_packet",
      "signature": "Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 113,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "make_nack_packet",
      "signature": "Packet make_nack_packet(NodeId peer, FlowId flow, PacketSeq miss, FlowPriority prio, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 113,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NicSchedulingWeights::NetworkNic::PortQueues::make_trim_back_response",
      "signature": "Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept",
      "file": "src/network/network_nic.h",
      "line": 116,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "make_trim_back_response",
      "signature": "Packet make_trim_back_response(const Packet &trim, PortId ingress) noexcept;",
      "file": "src/network/network_nic.h",
      "line": 116,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "NetworkNode::NetworkNode",
      "signature": "explicit NetworkNode(Simulator *const sim, NodeId id, NodeType type) noexcept",
      "file": "src/network/network_node.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "NetworkNode::~NetworkNode",
      "signature": "virtual ~NetworkNode() = default",
      "file": "src/network/network_node.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NetworkNode::recv_pkt",
      "signature": "virtual void recv_pkt(Packet &pkt, PortId ingress) = 0",
      "file": "src/network/network_node.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "NetworkSwitch::NetworkSwitch",
      "signature": "NetworkSwitch(Simulator *const sim, NodeId id, uint16_t total_ports, ECNEngine *const ecn, SwitchBuffer *const buf, const RoutingTables *const rt, Time forwarding_latency, Time multicast_dup_delay) noexcept",
      "file": "src/network/network_switch.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NetworkSwitch::recv_pkt",
      "signature": "virtual void recv_pkt(Packet &pkt, PortId ingress) override",
      "file": "src/network/network_switch.h",
      "line": 30,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NetworkSwitch::set_status",
      "signature": "void set_status(NodeStatus s, Time new_forward_latency = Time(0)) noexcept",
      "file": "src/network/network_switch.h",
      "line": 36,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NetworkSwitch::get_status",
      "signature": "NodeStatus get_status() const noexcept",
      "file": "src/network/network_switch.h",
      "line": 38,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NetworkSwitch::port_cnt",
      "signature": "uint16_t port_cnt() const noexcept",
      "file": "src/network/network_switch.h",
      "line": 42,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "forward_after_delay",
      "signature": "private: void forward_after_delay(Packet pkt, PortId ingress) noexcept;",
      "file": "src/network/network_switch.h",
      "line": 45,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "enqueue_one",
      "signature": "void enqueue_one(Packet pkt, PortId egress, FlowPriority prio) noexcept;",
      "file": "src/network/network_switch.h",
      "line": 48,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "merge_sorted_unique",
      "signature": "static void merge_sorted_unique(std::vector<PortId> &base, const std::vector<PortId> &add);",
      "file": "src/network/network_switch.h",
      "line": 58,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "group_bit_set",
      "signature": "static inline bool group_bit_set(PacketGroups mask, std::size_t gid) noexcept;",
      "file": "src/network/network_switch.h",
      "line": 62,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "CongestionControl::CongestionControl",
      "signature": "explicit CongestionControl(Bytes init_cwnd, Bytes max_cwnd) noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 13,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "CongestionControl::~CongestionControl",
      "signature": "virtual ~CongestionControl() = default",
      "file": "src/network/nic/congestion_control.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "CongestionControl::update",
      "signature": "virtual void update(const Packet &pkt, Time rtt) noexcept = 0",
      "file": "src/network/nic/congestion_control.h",
      "line": 16,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "CongestionControl::is_allowed_to_send",
      "signature": "virtual bool is_allowed_to_send(Bytes bytes_outstanding, Bytes next_bytes) const noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 18,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "CongestionControl::cwnd",
      "signature": "Bytes cwnd() const noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 21,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "CongestionControl::cwnd_max",
      "signature": "Bytes cwnd_max() const noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 24,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "DCQCN::DCQCN",
      "signature": "explicit DCQCN(Bytes init_cwnd, Bytes max_cwnd) noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "DCQCN::update",
      "signature": "virtual void update(const Packet &pkt, Time rtt) noexcept override",
      "file": "src/network/nic/congestion_control.h",
      "line": 36,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "NSCC::NSCC",
      "signature": "explicit NSCC(Bytes init_cwnd, Bytes max_cwnd) noexcept",
      "file": "src/network/nic/congestion_control.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "NSCC::update",
      "signature": "virtual void update(const Packet &pkt, Time rtt) noexcept override",
      "file": "src/network/nic/congestion_control.h",
      "line": 42,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "LoadBalance::LoadBalance",
      "signature": "explicit LoadBalance(Rng *const rng) noexcept : _rng(rng)",
      "file": "src/network/nic/load_balance.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "LoadBalance::~LoadBalance",
      "signature": "virtual ~LoadBalance() = default",
      "file": "src/network/nic/load_balance.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "LoadBalance::update",
      "signature": "virtual void update(const Packet &pkt) noexcept = 0",
      "file": "src/network/nic/load_balance.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "LoadBalance::get_entropy",
      "signature": "virtual uint16_t get_entropy(const Packet &context) noexcept = 0",
      "file": "src/network/nic/load_balance.h",
      "line": 20,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "LBRandomPacketSpraying::LBRandomPacketSpraying",
      "signature": "explicit LBRandomPacketSpraying(Rng *const rng) noexcept : LoadBalance(rng)",
      "file": "src/network/nic/load_balance.h",
      "line": 29,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "LBRandomPacketSpraying::update",
      "signature": "virtual void update(const Packet &pkt) noexcept override",
      "file": "src/network/nic/load_balance.h",
      "line": 30,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "LBRandomPacketSpraying::get_entropy",
      "signature": "virtual uint16_t get_entropy(const Packet &context) noexcept override",
      "file": "src/network/nic/load_balance.h",
      "line": 31,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "Packet::Packet",
      "signature": "Packet(NodeId src_node, PortId src_port, NodeId dst_node, PortId dst_port, PacketProtocol proto, FlowPriority prio, PacketSeq seq = 0, FlowId flow = 0, uint16_t entropy = 0, uint8_t notifications = 0, Bytes payload_bytes = DEFAULT_MSS_BYTES) noexcept",
      "file": "src/network/packet.h",
      "line": 20,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::src_node",
      "signature": "NodeId src_node() const noexcept",
      "file": "src/network/packet.h",
      "line": 32,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::src_port",
      "signature": "PortId src_port() const noexcept",
      "file": "src/network/packet.h",
      "line": 33,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::dst_node",
      "signature": "NodeId dst_node() const noexcept",
      "file": "src/network/packet.h",
      "line": 34,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::dst_port",
      "signature": "PortId dst_port() const noexcept",
      "file": "src/network/packet.h",
      "line": 35,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::protocol",
      "signature": "PacketProtocol protocol() const noexcept",
      "file": "src/network/packet.h",
      "line": 36,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::seq",
      "signature": "PacketSeq seq() const noexcept",
      "file": "src/network/packet.h",
      "line": 37,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::flow_id",
      "signature": "FlowId flow_id() const noexcept",
      "file": "src/network/packet.h",
      "line": 38,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::entropy",
      "signature": "uint32_t entropy() const noexcept",
      "file": "src/network/packet.h",
      "line": 39,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_src_node",
      "signature": "void set_src_node(NodeId n) noexcept",
      "file": "src/network/packet.h",
      "line": 41,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_src_port",
      "signature": "void set_src_port(PortId p) noexcept",
      "file": "src/network/packet.h",
      "line": 42,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_dst_node",
      "signature": "void set_dst_node(NodeId n) noexcept",
      "file": "src/network/packet.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_dst_port",
      "signature": "void set_dst_port(PortId p) noexcept",
      "file": "src/network/packet.h",
      "line": 44,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_seq",
      "signature": "void set_seq(PacketSeq s) noexcept",
      "file": "src/network/packet.h",
      "line": 45,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_flow_id",
      "signature": "void set_flow_id(FlowId f) noexcept",
      "file": "src/network/packet.h",
      "line": 46,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_entropy",
      "signature": "void set_entropy(uint32_t e) noexcept",
      "file": "src/network/packet.h",
      "line": 47,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_protocol",
      "signature": "void set_protocol(PacketProtocol p) noexcept",
      "file": "src/network/packet.h",
      "line": 48,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_payload_size",
      "signature": "void set_payload_size(Bytes size) noexcept",
      "file": "src/network/packet.h",
      "line": 50,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_ecn_enabled",
      "signature": "void set_ecn_enabled(bool v) noexcept",
      "file": "src/network/packet.h",
      "line": 52,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_ecn_marked",
      "signature": "void set_ecn_marked(bool v) noexcept",
      "file": "src/network/packet.h",
      "line": 53,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_eof",
      "signature": "void set_eof(bool v) noexcept",
      "file": "src/network/packet.h",
      "line": 55,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::is_ecn_enabled",
      "signature": "bool is_ecn_enabled() const noexcept",
      "file": "src/network/packet.h",
      "line": 57,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::is_ecn",
      "signature": "bool is_ecn() const noexcept",
      "file": "src/network/packet.h",
      "line": 58,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::is_eof",
      "signature": "bool is_eof() const noexcept",
      "file": "src/network/packet.h",
      "line": 59,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::priority",
      "signature": "FlowPriority priority() const noexcept",
      "file": "src/network/packet.h",
      "line": 61,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::priority_raw",
      "signature": "uint8_t priority_raw() const noexcept",
      "file": "src/network/packet.h",
      "line": 62,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::header_size",
      "signature": "Bytes header_size() const noexcept",
      "file": "src/network/packet.h",
      "line": 64,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::payload_size",
      "signature": "Bytes payload_size() const noexcept",
      "file": "src/network/packet.h",
      "line": 65,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::total_size",
      "signature": "Bytes total_size() const noexcept",
      "file": "src/network/packet.h",
      "line": 66,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::groups",
      "signature": "PacketGroups groups() const noexcept",
      "file": "src/network/packet.h",
      "line": 68,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::set_groups",
      "signature": "void set_groups(PacketGroups g) noexcept",
      "file": "src/network/packet.h",
      "line": 69,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "Packet::add_groups",
      "signature": "void add_groups(PacketGroups gmask) noexcept",
      "file": "src/network/packet.h",
      "line": 70,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "DedicatedBuffer::DedicatedBuffer",
      "signature": "DedicatedBuffer(Simulator *const sim, NetworkSwitch *const owner, Bytes total_bytes, uint16_t ports)",
      "file": "src/network/switch/dedicated_buffer.h",
      "line": 12,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "DedicatedBuffer::enqueue_packet",
      "signature": "bool enqueue_packet(const Packet &pkt, PortId egress, FlowPriority prio) override",
      "file": "src/network/switch/dedicated_buffer.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "DedicatedBuffer::drain_one",
      "signature": "bool drain_one(PortId port) override",
      "file": "src/network/switch/dedicated_buffer.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "DedicatedREDEngine::DedicatedREDEngine",
      "signature": "DedicatedREDEngine(Bytes min_th, Bytes max_th, double p_max, bool back_to_sender, Rng *const rng) noexcept : _min_th(min_th), _max_th(max_th), _p_max(p_max), _back_to_sender(back_to_sender), _rng(rng)",
      "file": "src/network/switch/ecn_dedicated_red.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "DedicatedREDEngine::process_packet",
      "signature": "virtual Packet &process_packet(Packet &pkt, SwitchBuffer *buf) noexcept override",
      "file": "src/network/switch/ecn_dedicated_red.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::ensure_size",
      "signature": "private: void ensure_size(uint16_t port_cnt){",
      "file": "src/network/switch/ecn_dedicated_red.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "ECNEngine::~ECNEngine",
      "signature": "virtual ~ECNEngine() = default",
      "file": "src/network/switch/ecn_engine.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "ECNEngine::process_packet",
      "signature": "virtual Packet &process_packet(Packet &pkt, SwitchBuffer *buf) noexcept = 0",
      "file": "src/network/switch/ecn_engine.h",
      "line": 18,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::header_trim",
      "signature": "static inline void header_trim(Packet &pkt, bool back_to_sender) noexcept{",
      "file": "src/network/switch/ecn_engine.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "SharedREDEngine::SharedREDEngine",
      "signature": "explicit SharedREDEngine(Rng *const rng = nullptr) noexcept : _rng(rng), _avg_total_bytes(0.0), _avg_port_bytes()",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 20,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SharedREDEngine::process_packet",
      "signature": "virtual Packet &process_packet(Packet &pkt, SwitchBuffer *buf) noexcept override",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::ensure_size",
      "signature": "private: void ensure_size(uint16_t port_cnt){",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 26,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "is_ctrl",
      "signature": "static inline bool is_ctrl(const Packet &p) noexcept{",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "is_mice",
      "signature": "static inline bool is_mice(const Packet &p) noexcept{",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 37,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "is_ele",
      "signature": "static inline bool is_ele (const Packet &p) noexcept{",
      "file": "src/network/switch/ecn_shared_red.h",
      "line": 40,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "McTree::MulticastTable::MulticastTable",
      "signature": "MulticastTable()",
      "file": "src/network/switch/multicast_table.h",
      "line": 25,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::add_tree",
      "signature": "bool add_tree(std::size_t group_id, uint16_t tree_id)",
      "file": "src/network/switch/multicast_table.h",
      "line": 27,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::delete_tree",
      "signature": "bool delete_tree(std::size_t group_id, uint16_t tree_id)",
      "file": "src/network/switch/multicast_table.h",
      "line": 28,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::add_child_port",
      "signature": "bool add_child_port(std::size_t group_id, uint16_t tree_id, PortId out_port)",
      "file": "src/network/switch/multicast_table.h",
      "line": 30,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::delete_child_port",
      "signature": "bool delete_child_port(std::size_t group_id, uint16_t tree_id, PortId out_port)",
      "file": "src/network/switch/multicast_table.h",
      "line": 31,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::set_parent",
      "signature": "bool set_parent(std::size_t group_id, uint16_t tree_id, PortId parent)",
      "file": "src/network/switch/multicast_table.h",
      "line": 33,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::set_weight",
      "signature": "bool set_weight(std::size_t group_id, uint16_t tree_id, uint8_t w)",
      "file": "src/network/switch/multicast_table.h",
      "line": 34,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::set_epoch",
      "signature": "bool set_epoch(std::size_t group_id, uint16_t tree_id, uint8_t epoch)",
      "file": "src/network/switch/multicast_table.h",
      "line": 35,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::trees_of",
      "signature": "const std::vector<McTree> *trees_of(std::size_t group_id) const",
      "file": "src/network/switch/multicast_table.h",
      "line": 37,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::group_count",
      "signature": "std::size_t group_count() const noexcept",
      "file": "src/network/switch/multicast_table.h",
      "line": 38,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "McTree::MulticastTable::get_port_list",
      "signature": "std::vector<PortId> get_port_list(PacketGroups groups) const",
      "file": "src/network/switch/multicast_table.h",
      "line": 41,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::hash_ecmp",
      "signature": "PortId hash_ecmp(NodeId src_node, PortId src_port, NodeId dst_node, PortId dst_port, uint32_t differentiator, uint16_t port_count) noexcept;",
      "file": "src/network/switch/routing_alg.h",
      "line": 9,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::hash_ecmp",
      "signature": "inline PortId hash_ecmp(NodeId src_node, NodeId dst_node, uint32_t differentiator, uint16_t port_count) noexcept{",
      "file": "src/network/switch/routing_alg.h",
      "line": 14,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "dofs::hash_ecmp",
      "signature": "return hash_ecmp(src_node, static_cast<PortId>(0), dst_node, static_cast<PortId>(0), differentiator, port_count);",
      "file": "src/network/switch/routing_alg.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "SharedBuffer::SharedBuffer",
      "signature": "SharedBuffer(Simulator *const sim, NetworkSwitch *const owner, Bytes total_bytes, uint16_t ports)",
      "file": "src/network/switch/shared_buffer.h",
      "line": 12,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SharedBuffer::enqueue_packet",
      "signature": "virtual bool enqueue_packet(const Packet &pkt, PortId egress, FlowPriority prio) override",
      "file": "src/network/switch/shared_buffer.h",
      "line": 17,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SharedBuffer::drain_one",
      "signature": "virtual bool drain_one(PortId port) override",
      "file": "src/network/switch/shared_buffer.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "dtor",
      "qualified": "SwitchBuffer::~SwitchBuffer",
      "signature": "virtual ~SwitchBuffer() = default",
      "file": "src/network/switch/switch_buffer.h",
      "line": 32,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::enqueue_packet",
      "signature": "virtual bool enqueue_packet(const Packet &pkt, PortId egress, FlowPriority prio) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 37,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::drain_one",
      "signature": "virtual bool drain_one(PortId port) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 43,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::buffer_size",
      "signature": "Bytes buffer_size() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 46,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::type",
      "signature": "SwitchBufferType type() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 47,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::port_cnt",
      "signature": "uint16_t port_cnt() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 48,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::port_buffered",
      "signature": "Bytes port_buffered(PortId p) const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 49,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::ports_buffered",
      "signature": "const std::vector<Bytes> &ports_buffered() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 50,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::share_ctrl",
      "signature": "uint8_t share_ctrl() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 53,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::share_mice",
      "signature": "uint8_t share_mice() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 54,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::share_elephant",
      "signature": "uint8_t share_elephant() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 55,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::set_share_ctrl",
      "signature": "void set_share_ctrl(uint8_t pct) noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 59,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::set_share_mice",
      "signature": "void set_share_mice(uint8_t pct) noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 60,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::set_share_elephant",
      "signature": "void set_share_elephant(uint8_t pct) noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 61,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::simulator",
      "signature": "const Simulator *simulator() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 64,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::owner",
      "signature": "const NetworkSwitch *owner() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 65,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::set_egress_links",
      "signature": "void set_egress_links(const std::vector<Link*> &links)",
      "file": "src/network/switch/switch_buffer.h",
      "line": 68,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "drain_one_common",
      "signature": "bool drain_one_common(PortId port);",
      "file": "src/network/switch/switch_buffer.h",
      "line": 111,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::drain_one_common",
      "signature": "bool drain_one_common(PortId port)",
      "file": "src/network/switch/switch_buffer.h",
      "line": 114,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "schedule_drain_if_needed",
      "signature": "void schedule_drain_if_needed(PortId port);",
      "file": "src/network/switch/switch_buffer.h",
      "line": 115,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::schedule_drain_if_needed",
      "signature": "void schedule_drain_if_needed(PortId port)",
      "file": "src/network/switch/switch_buffer.h",
      "line": 117,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::drain_once",
      "signature": "void drain_once(PortId port)",
      "file": "src/network/switch/switch_buffer.h",
      "line": 118,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "drain_once",
      "signature": "void drain_once(PortId port);",
      "file": "src/network/switch/switch_buffer.h",
      "line": 118,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::queues_for",
      "signature": "virtual std::array<std::deque<Queued>, PRI_COUNT> &queues_for(PortId p) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 123,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::queues_for",
      "signature": "virtual const std::array<std::deque<Queued>, PRI_COUNT> &queues_for( PortId p) const = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 124,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::on_enqueue_cap_check",
      "signature": "virtual bool on_enqueue_cap_check(PortId port, Bytes sz) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 128,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::on_enqueue_commit",
      "signature": "virtual void on_enqueue_commit(PortId port, Bytes sz) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 129,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::on_dequeue_commit",
      "signature": "virtual void on_dequeue_commit(PortId port, Bytes sz) = 0",
      "file": "src/network/switch/switch_buffer.h",
      "line": 130,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "free_function",
      "qualified": "try_reserve_and_send",
      "signature": "std::optional<Time> try_reserve_and_send(PortId port, Queued &q);",
      "file": "src/network/switch/switch_buffer.h",
      "line": 130,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::try_reserve_and_send",
      "signature": "std::optional<Time> try_reserve_and_send(PortId port, Queued &q)",
      "file": "src/network/switch/switch_buffer.h",
      "line": 134,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::queued_bytes_total",
      "signature": "Bytes queued_bytes_total() const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 137,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "SwitchBuffer::PerPortSched::queued_bytes_port",
      "signature": "Bytes queued_bytes_port(PortId p) const noexcept",
      "file": "src/network/switch/switch_buffer.h",
      "line": 138,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "ctor",
      "qualified": "UnicastTable::UnicastTable",
      "signature": "UnicastTable() = default",
      "file": "src/network/switch/unicast_table.h",
      "line": 15,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "UnicastTable::get_port_list",
      "signature": "std::vector<PortId> get_port_list(NodeId dst_node, PortId dst_port) const",
      "file": "src/network/switch/unicast_table.h",
      "line": 17,
      "static": false,
      "const": true,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "UnicastTable::add_entry",
      "signature": "bool add_entry(NodeId dst_node, PortId dst_port, PortId out_port)",
      "file": "src/network/switch/unicast_table.h",
      "line": 19,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    },
    {
      "kind": "method",
      "qualified": "UnicastTable::delete_entry",
      "signature": "bool delete_entry(NodeId dst_node, PortId dst_port, PortId out_port)",
      "file": "src/network/switch/unicast_table.h",
      "line": 21,
      "static": false,
      "const": false,
      "ref_qual": "",
      "template_params": ""
    }
  ]
}