Go to the documentation of this file.
47 int maxPortConnections = 0,
48 unsigned int computePeriod = 1) :
59 NRPLogger::debug(
"In node \"" +
id +
"\". When policy publish 'FROM_CACHE' is used and/or period is not set to 1, "
60 "the node can only accept one connection per port. 'maxPortConnections'"
75 std::string s =
"Node '" + this->
id() +
"' is already configured. Ignoring request to get or register port '" +
id +
"'.";
82 "' under a different data type");
85 using std::placeholders::_1;
101 NRPLogger::info(
"In node \"" + this->
id() +
"\". Request to set compute period to " + std::to_string(computePeriod) +
"rejected "
102 "because the node node ports can receive more than one connections");
142 void storeMsg(
const std::string&
id,
const DATA* data)
173 virtual void sendSingleMsg(
const std::string&
id,
const DATA* data) = 0;
178 virtual void sendBatchMsg(
const std::string&
id,
const std::vector<const DATA*>& data) = 0;
207 #endif //OUTPUT_NODE_H
int _maxPortConnections
Maximum number of subscriptions of ports in this node.
Definition: output_node.h:189
bool _isConfigured
true if the node has been configured, false otherwise
Definition: output_node.h:191
bool _publishFromCache
Publish frequency policy used by this node.
Definition: output_node.h:187
virtual void sendSingleMsg(const std::string &id, const DATA *data)=0
Sends out a single msg, to be implemented by derived classes.
unsigned int _computePeriod
Property specifying the number of loops that passes between executions of this node.
Definition: output_node.h:198
@ Output
Definition: computational_node.h:37
bool publishFromCache()
Definition: output_node.h:109
const std::string & id() const
Returns the node 'id'.
Definition: computational_node.h:57
static void info(const FormatString &fmt, const Args &...args)
NRP logging function with message formatting for info level.
Definition: nrp_logger.h:138
void sendMsgs(const std::string &id)
Sends all msgs stored in _storedMsgs['id'] and clears the storage.
Definition: output_node.h:157
Implementation of an output node in the computation graph.
Definition: output_node.h:38
InputPort< T_IN, DATA > * getOrRegisterInput(const std::string &id)
Gets or register input port to this node and returns a pointer to it.
Definition: output_node.h:70
OutputNode(const std::string &id, OutputNodePolicies::PublishFormatPolicy publishFormatPolicy=OutputNodePolicies::PublishFormatPolicy::SERIES, bool publishFromCache=false, int maxPortConnections=0, unsigned int computePeriod=1)
Constructor.
Definition: output_node.h:44
void setComputePeriod(unsigned int computePeriod)
Definition: output_node.h:98
void storeMsg(const std::string &id, const DATA *data)
Stores a new msg in _storedMsgs['id'].
Definition: output_node.h:142
unsigned int getComputePeriod()
Definition: output_node.h:95
friend class ComputationalNodes_OUTPUT_NODE_Test
Definition: output_node.h:202
@ SERIES
Definition: computational_node_policies.h:51
virtual bool doCompute() const
Tells if this node should be executed in this graph execution cycle, used in some graph execution mod...
Definition: computational_node.h:96
static EXCEPTION logCreate(LOG_EXCEPTION_T &exception, const std::string &msg, NRPLogger::spdlog_out_fcn_t spdlogCall=NRPLogger::critical)
Definition: nrp_exceptions.h:73
friend class ComputationalGraphPythonNodes_PYTHON_DECORATORS_BASIC_Test
Definition: output_node.h:203
std::map< std::string, std::shared_ptr< Port > > _inputPorts
List of ports owned by this node.
Definition: output_node.h:181
virtual bool doCompute() const override final
Tells if this node should be executed in this graph execution cycle, used in some graph execution mod...
Definition: output_node.h:112
port
Definition: python_json_engine.py:197
virtual void sendBatchMsg(const std::string &id, const std::vector< const DATA * > &data)=0
Sends out a vector of msg as a single batch, to be implemented by derived classes.
virtual void compute() override final
Requests the node to execute its computation.
Definition: output_node.h:127
unsigned int _nLoop
Variable counting the number of times this nodes has been asked to execute (1 per loop)
Definition: output_node.h:200
void configure() override
Configures the node making it ready to execute 'compute'.
Definition: output_node.h:117
OutputNodePolicies::PublishFormatPolicy _publishFormatPolicy
Send policy used by this node.
Definition: output_node.h:185
static void debug(const FormatString &fmt, const Args &...args)
NRP logging function with message formatting for debug level.
Definition: nrp_logger.h:127
std::map< std::string, std::vector< const DATA * > > _storedMsgs
List of msgs stored in this node.
Definition: output_node.h:183
PublishFormatPolicy
Defines how output nodes send stored msgs.
Definition: computational_node_policies.h:50
Base class implementing a node in the computational graph.
Definition: computational_node.h:31
void graphCycleStartCB() override final
Function called by the Computational Graph at the beginning of a new execution cycle.
Definition: output_node.h:136