qosd: добавлены атрибуты узлов
Мне показалось, будет удобно использовать вложенную структуру в качестве аргумента конструктора.
This commit is contained in:
+25
-1
@@ -1,5 +1,6 @@
|
||||
#pragma once
|
||||
|
||||
#include <cstdint>
|
||||
#include "nodes/LeafNode.h"
|
||||
#include "mixins/FabricMixin.h"
|
||||
#include "Logger.h"
|
||||
@@ -8,14 +9,37 @@
|
||||
class REDNode : public LeafNode,
|
||||
public FabricMixin<REDNode> {
|
||||
public:
|
||||
struct Config {
|
||||
std::uint64_t limit = 0; ///< Размер буфера, байты (обязателен)
|
||||
std::uint64_t min = 0; ///< Нижняя граница для разметки, байты
|
||||
std::uint64_t max = 0; ///< Верхняя граница для разметки, байты
|
||||
std::uint32_t avpkt = 0; ///< Средний размер пакета, байты (обязателен)
|
||||
std::uint64_t burst = 0; ///< Всплеск, байты
|
||||
double probability = 0.0; ///< Максимальная вероятность, 0..1
|
||||
std::uint64_t bandwidth = 0; ///< Скорость интерфейса, бит/с
|
||||
bool ecn = false; ///< Включить ECN-разметку вместо дропа
|
||||
bool harddrop = false; ///< Жёсткий дроп при превышении max
|
||||
bool nodrop = false; ///< Не дропать non-ECN-пакеты
|
||||
};
|
||||
|
||||
~REDNode() {
|
||||
Logger::get("ConDes").dbg(std::string("--- RED destructor called for: ") + name_);
|
||||
}
|
||||
|
||||
const Config& config() const { return config_; }
|
||||
private:
|
||||
friend class FabricMixin<REDNode>;
|
||||
REDNode(std::string name) : LeafNode(std::move(name), "RED") {
|
||||
REDNode(std::string&& name)
|
||||
: LeafNode(std::move(name), "RED") {
|
||||
Logger::get("ConDes").dbg(std::string("--- RED constructor called for: ") + name_);
|
||||
}
|
||||
|
||||
REDNode(std::string&& name, Config&& config)
|
||||
: LeafNode(std::move(name), "RED"), config_(std::move(config)) {
|
||||
Logger::get("ConDes").dbg(std::string("--- RED constructor called for: ") + name_);
|
||||
}
|
||||
|
||||
Config config_{};
|
||||
};
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user