qosd: добавлены атрибуты узлов
Мне показалось, будет удобно использовать вложенную структуру в качестве аргумента конструктора.
This commit is contained in:
+23
-1
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include "nodes/BaseNode.h"
|
||||
#include "mixins/LazyLinkMixin.h"
|
||||
#include "mixins/FabricMixin.h"
|
||||
@@ -12,15 +13,36 @@ class SFQNode : public BaseNode,
|
||||
virtual public LazyLinkMixin<TypedOneToOneLink<INode, REDNode>>,
|
||||
public FabricMixin<SFQNode> {
|
||||
public:
|
||||
struct Config {
|
||||
std::uint32_t limit = 0; ///< Суммарный лимит по всем потокам, пакеты
|
||||
std::uint32_t depth = 0; ///< Лимит на один поток, пакеты
|
||||
std::uint32_t divisor = 1024; ///< Размер хэш-таблицы (степень двойки)
|
||||
std::uint32_t perturb = 0; ///< Период пертурбации, секунды
|
||||
std::uint32_t flows = 0; ///< Число потоков
|
||||
std::uint32_t quantum = 0; ///< Порция RR, байты
|
||||
bool headdrop = false; ///< Отбрасывать из головы очереди
|
||||
/// Параметры RED per-flow задаются через дочерний REDNode.
|
||||
};
|
||||
|
||||
~SFQNode() {
|
||||
Logger::get("ConDes").dbg(std::string("--- SFQ destructor called for: ") + name_);
|
||||
}
|
||||
|
||||
const Config& config() const { return config_; }
|
||||
private:
|
||||
friend class FabricMixin<SFQNode>;
|
||||
SFQNode(std::string name) : BaseNode(std::move(name)) {
|
||||
SFQNode(std::string&& name) : BaseNode(std::move(name)) {
|
||||
kind_ = "SFQ";
|
||||
Logger::get("ConDes").dbg(std::string("--- SFQ constructor called for: ") + name_);
|
||||
}
|
||||
|
||||
SFQNode(std::string&& name, Config&& config)
|
||||
: BaseNode(std::move(name)), config_(std::move(config)) {
|
||||
kind_ = "SFQ";
|
||||
Logger::get("ConDes").dbg(std::string("--- SFQ constructor called for: ") + name_);
|
||||
}
|
||||
|
||||
Config config_{};
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user