14 Commits (master)

Author SHA1 Message Date
Sergey Marinkevich 79caaad58d qosd: добавил краевые узлы
Краевые узлы не могут иметь дочерние узлы. Отлично подходит для
бесклассовых дисциплин. Например, вариации FIFO, Fair Queue, RED и т.д.

Псевдо-бесклассовые по типу TBF, которые подключают в себя FIFO (или
любую указанную пользователем дисциплину), всё ещё должны пользоваться
SimpleNode.
9 months ago
Сергей Маринкевич 10b79b8af6 qosd: исправлен комментарий 9 months ago
Сергей Маринкевич 784594faa6 qosd: создание узлов переведено на фабричный метод
Решил обойтись простым ~~советским~~ статическим методом:

	template <typename T>
	class FabricMixin {
	public:
		template <typename... Args>
		static std::shared_ptr<T> create(Args&&... args) {
			return std::shared_ptr<T>(new T(std::forward<Args>(args)...));
		}
	};

Ну ладно, он не так просто выглядит на первый взгляд. Но, по сути, всё,
что он делает: параметризует метод типом возвращаемого указателя, и
передаёт все аргументы как есть в конструктор заданного типа. Решил
сделать так, чтобы не копипастить тело конструктора. Ну, вдруг я,
например, трассировку туда добавить захочу. Правда, есть недостаток у
такого решения:

	class SimpleNode : ...,
			   public FabricMixin<SimpleNode> {
		friend class FabricMixin<SimpleNode>;

Не очень удобное подключение: а) нужно внести по крайней мере две
строчки; б) автоматически самого себя параметром шаблона передавать
нельзя.

Вносить этот метод в `BaseNode` (или около) не хотел, чтобы не
пробрасывать оконечный тип по всей иерархии. Да и от указанных выше
проблем он не избавляет. Зато можно будет относительно безболезненно
выпилить этот класс, если ему подвернётся достойная замена.
9 months ago
Сергей Маринкевич 6c5d9d7992 qosd: трассировка кон-/деструкторов переведена на отдельный логгер
Т.к. в основном меня либо интересует создание/удаление объектов, либо
нет. Смысла объединять это логи с другими логами объектов каждой
подсистемы я не вижу.
9 months ago
Сергей Маринкевич 0f9d73366b add doxygen 10 months ago
Сергей Маринкевич e5dc6f7502 make nodes to provide nodes instead of mixins 10 months ago
Сергей Маринкевич c228caaa45 add hierarchical node 10 months ago
Сергей Маринкевич 55ef99c848 unlink the links 10 months ago
Сергей Маринкевич d17c80a195 fup 10 months ago
Сергей Маринкевич f994303cb5 cleanup 10 months ago
Сергей Маринкевич 0912566c5f working...? 10 months ago
Сергей Маринкевич f5f78308bd tmp 10 months ago
Сергей Маринкевич 44480a7128 shared children disappear 10 months ago
Сергей Маринкевич b2be9b51ca poperdolilo 10 months ago