Skip to main content

StageNode.h File

Stage-backed graph node wrapper. More...

Included Headers

#include "graph/GraphTypes.h" #include "graph/Node.h" #include <cstddef> #include <functional> #include <memory> #include <string> #include <utility> #include <vector>

Namespaces Index

namespacesimaai
namespaceneat
namespacegraph
namespacenodes

Classes Index

structStageNodeOptions
classStageNode

Description

Stage-backed graph node wrapper.

File Listing

The file content with the documentation metadata removed is:

1
6#pragma once
7
8#include "graph/GraphTypes.h"
9#include "graph/Node.h"
10
11#include <cstddef>
12#include <functional>
13#include <memory>
14#include <string>
15#include <utility>
16#include <vector>
17
18namespace simaai::neat::graph {
19class StageExecutor;
20} // namespace simaai::neat::graph
21
23
24enum class StageKeyBy {
25 None = 0,
27};
28
30 int instances = 1; // number of executor instances
32 std::size_t max_inflight = 0; // 0 => use GraphRunOptions.edge_queue
33};
34
35class StageNode final : public simaai::neat::graph::Node {
36public:
37 using StageExecutorFactory = std::function<std::unique_ptr<simaai::neat::graph::StageExecutor>()>;
38 using OutputSpecFn = std::function<OutputSpec(const std::vector<OutputSpec>&, PortId)>;
39
40 StageNode(std::string kind, StageExecutorFactory factory, std::vector<PortDesc> inputs,
41 std::vector<PortDesc> outputs, std::string label = {}, OutputSpecFn out_fn = {},
42 StageNodeOptions options = {})
43 : kind_(std::move(kind)), label_(std::move(label)), inputs_(std::move(inputs)),
44 outputs_(std::move(outputs)), factory_(std::move(factory)),
45 output_spec_fn_(std::move(out_fn)), options_(std::move(options)) {}
46
47 Backend backend() const override {
48 return Backend::Stage;
49 }
50
51 std::string kind() const override {
52 return kind_;
53 }
54
55 std::string user_label() const override {
56 return label_;
57 }
58
59 std::vector<PortDesc> input_ports() const override {
60 return inputs_;
61 }
62
63 std::vector<PortDesc> output_ports() const override {
64 return outputs_;
65 }
66
67 OutputSpec output_spec(const std::vector<OutputSpec>& inputs, PortId out_port) const override {
68 if (output_spec_fn_)
69 return output_spec_fn_(inputs, out_port);
70 if (outputs_.size() == 1)
71 return outputs_.front().spec;
72 return OutputSpec{};
73 }
74
76 return factory_;
77 }
78 const StageNodeOptions& options() const {
79 return options_;
80 }
81
82private:
83 std::string kind_;
84 std::string label_;
85 std::vector<PortDesc> inputs_;
86 std::vector<PortDesc> outputs_;
88 OutputSpecFn output_spec_fn_;
89 StageNodeOptions options_;
90};
91
92} // namespace simaai::neat::graph::nodes

Generated via doxygen2docusaurus 2.0.0 by Doxygen 1.9.1.