qosd: добавлены атрибуты узлов

Мне показалось, будет удобно использовать вложенную структуру в качестве
аргумента конструктора.
This commit is contained in:
Сергей Маринкевич
2025-09-03 20:12:47 +07:00
parent 9c32fb89b8
commit 9b5996abb5
7 changed files with 133 additions and 11 deletions
+22 -1
View File
@@ -1,5 +1,7 @@
#pragma once
#include <cstdint>
#include <string>
#include "nodes/BaseNode.h"
#include "mixins/LazyLinkMixin.h"
#include "mixins/FabricMixin.h"
@@ -11,15 +13,34 @@ class WREDNode : public BaseNode,
virtual public LazyLinkMixin<TypedOneToManyLink<INode, REDNode>>,
public FabricMixin<WREDNode> {
public:
struct Config {
std::uint32_t vqs = 0; ///< Количество виртуальных очередей (обязателен)
std::uint32_t def = 0; ///< Виртуальная очередь по умолчанию
bool grio = false; ///< Наследование буферов (GRIO)
std::uint64_t limit = 0; ///< Глобальный лимит буфера, байты (необязателен)
bool ecn = false; ///< Включить ECN на дисциплине
bool harddrop = false; ///< Жёсткий дроп при превышении max
};
~WREDNode() {
Logger::get("ConDes").dbg(std::string("--- WRED destructor called for: ") + name_);
}
const Config& config() const { return config_; }
private:
friend class FabricMixin<WREDNode>;
WREDNode(std::string name) : BaseNode(std::move(name)) {
WREDNode(std::string&& name) : BaseNode(std::move(name)) {
kind_ = "WRED";
Logger::get("ConDes").dbg(std::string("--- WRED constructor called for: ") + name_);
}
WREDNode(std::string&& name, Config&& config)
: BaseNode(std::move(name)), config_(std::move(config)) {
kind_ = "WRED";
Logger::get("ConDes").dbg(std::string("--- WRED constructor called for: ") + name_);
}
Config config_{};
};