Skip to main content

StreamScheduler.h File

Stage executor for fair multi-stream scheduling. More...

Included Headers

#include "graph/StageExecutor.h" #include "graph/nodes/StageNode.h" #include <cstddef> #include <cstdint> #include <deque> #include <memory> #include <string> #include <unordered_map> #include <unordered_set> #include <utility> #include <vector>

Namespaces Index

namespacesimaai
namespaceneat
namespacegraph
namespacenodes

Classes Index

structStreamSchedulerOptions
classStreamScheduler

Description

Stage executor for fair multi-stream scheduling.

File Listing

The file content with the documentation metadata removed is:

1
6#pragma once
7
10
11#include <cstddef>
12#include <cstdint>
13#include <deque>
14#include <memory>
15#include <string>
16#include <unordered_map>
17#include <unordered_set>
18#include <utility>
19#include <vector>
20
22
23enum class StreamDropPolicy {
24 DropOldest = 0,
26};
27
29 std::size_t per_stream_queue = 2;
31 int max_batch = 1; // scheduling-only batch (emit up to N per input)
32};
33
35public:
37
38 void set_ports(const StagePorts& ports) override;
39 void on_input(StageMsg&& msg, std::vector<StageOutMsg>& out) override;
40
41private:
42 void ensure_stream_(const std::string& stream_id);
43 bool emit_one_(std::vector<StageOutMsg>& out);
44
46 std::unordered_map<std::string, std::deque<Sample>> queues_;
47 std::deque<std::string> rr_order_;
48 std::unordered_set<std::string> active_;
49 PortId out_port_ = kInvalidPort;
50};
51
52// Convenience: wrap StreamScheduler in a StageNode.
53std::shared_ptr<simaai::neat::graph::Node> StreamSchedulerNode(StreamSchedulerOptions opt = {},
54 std::string label = {},
55 std::string input = "in",
56 std::string output = "out");
57
58} // namespace simaai::neat::graph::nodes

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.1.