0.2.0
Loading...
Searching...
No Matches
NAV::Node Class Referenceabstract

Abstract parent class for all nodes. More...

Classes

struct  Kind
 Kind information class. More...
 

Public Types

enum class  Mode {
  REAL_TIME ,
  POST_PROCESSING
}
 Different Modes the Node can work in. More...
 
enum class  State {
  Disabled ,
  Deinitialized ,
  DoInitialize ,
  Initializing ,
  Initialized ,
  DoDeinitialize ,
  Deinitializing ,
  DoShutdown ,
  Shutdown
}
 Possible states of the node. More...
 

Public Member Functions

virtual void afterCreateLink (OutputPin &startPin, InputPin &endPin)
 Called when a new link was established.
 
virtual void afterDeleteLink (OutputPin &startPin, InputPin &endPin)
 Called when a link was deleted.
 
virtual void deinitialize ()
 Deinitialize the Node.
 
bool doDeinitialize (bool wait=false)
 Asks the node worker to deinitialize the node.
 
bool doDisable (bool wait=false)
 Asks the node worker to disable the node.
 
bool doEnable ()
 Enable the node.
 
bool doInitialize (bool wait=false)
 Asks the node worker to initialize the node.
 
bool doReinitialize (bool wait=false)
 Asks the node worker to reinitialize the node.
 
virtual void flush ()
 Function called by the flow executer after finishing to flush out remaining data.
 
template<typename T >
std::optional< InputPin::IncomingLink::ValueWrapper< T > > getInputValue (size_t portIndex) const
 Get Input Value connected on the pin. Only const data types.
 
Mode getMode () const
 Get the current mode of the node.
 
const ImVec2 & getSize () const
 Get the size of the node.
 
State getState () const
 Get the current state of the node.
 
virtual void guiConfig ()
 ImGui config window which is shown on double click.
 
virtual bool initialize ()
 Initialize the Node.
 
InputPininputPinFromId (ax::NodeEditor::PinId pinId)
 Returns the pin with the given id.
 
size_t inputPinIndexFromId (ax::NodeEditor::PinId pinId) const
 Returns the index of the pin.
 
void invokeCallbacks (size_t portIndex, const std::shared_ptr< const NodeData > &data)
 Calls all registered callbacks on the specified output port.
 
bool isDisabled () const
 Checks if the node is disabled.
 
bool isInitialized () const
 Checks if the node is initialized.
 
bool isOnlyRealtime () const
 Checks if the node is only working in real time (sensors, network interfaces, ...)
 
bool isTransient () const
 Checks if the node is changing its state currently.
 
std::string nameId () const
 Node name and id.
 
 Node (const Node &)=delete
 Copy constructor.
 
 Node (Node &&)=delete
 Move constructor.
 
 Node (std::string name)
 Constructor.
 
void notifyOutputValueChanged (size_t pinIdx, const InsTime &insTime, const std::scoped_lock< std::mutex > &guard)
 Notifies connected nodes about the change.
 
virtual bool onCreateLink (OutputPin &startPin, InputPin &endPin)
 Called when a new link is to be established.
 
virtual void onDeleteLink (OutputPin &startPin, InputPin &endPin)
 Called when a link is to be deleted.
 
Nodeoperator= (const Node &)=delete
 Copy assignment operator.
 
Nodeoperator= (Node &&)=delete
 Move assignment operator.
 
OutputPinoutputPinFromId (ax::NodeEditor::PinId pinId)
 Returns the pin with the given id.
 
size_t outputPinIndexFromId (ax::NodeEditor::PinId pinId) const
 Returns the index of the pin.
 
void releaseInputValue (size_t portIndex)
 Unblocks the connected node. Has to be called when the input value should be released and getInputValue was not called.
 
std::scoped_lock< std::mutex > requestOutputValueLock (size_t pinIdx)
 Blocks the thread till the output values was read by all connected nodes.
 
virtual bool resetNode ()
 Resets the node. It is guaranteed that the node is initialized when this is called.
 
virtual void restore (const json &j)
 Restores the node from a json object.
 
virtual void restoreAtferLink (const json &j)
 Restores link related properties of the node from a json object.
 
virtual json save () const
 Saves the node into a json object.
 
virtual std::string type () const =0
 String representation of the Class Type.
 
void wakeWorker ()
 Wakes the worker thread.
 
virtual ~Node ()
 Destructor.
 

Static Public Member Functions

static std::string toString (State state)
 Converts the state into a printable text.
 

Public Attributes

bool callbacksEnabled
 Enables the callbacks.
 
ax::NodeEditor::NodeId id
 Unique Id of the Node.
 
std::vector< InputPininputPins
 List of input pins.
 
Kind kind
 Kind of the Node.
 
std::string name
 Name of the Node.
 
std::vector< OutputPinoutputPins
 List of output pins.
 
std::multimap< InsTime, std::pair< OutputPin *, size_t > > pollEvents
 Map with callback events (sorted by time)
 

Protected Attributes

ImVec2 _guiConfigDefaultWindowSize
 
bool _hasConfig
 Flag if the config window should be shown.
 
bool _lockConfigDuringRun
 Lock the config when executing post-processing.
 
bool _onlyRealTime
 Whether the node can run in post-processing or only real-time.
 

Detailed Description

Abstract parent class for all nodes.

Member Enumeration Documentation

◆ Mode

enum class NAV::Node::Mode
strong

Different Modes the Node can work in.

Enumerator
REAL_TIME 

Node running in real-time mode.

POST_PROCESSING 

Node running in post-processing mode.

◆ State

enum class NAV::Node::State
strong

Possible states of the node.

Enumerator
Disabled 

Node is disabled and won't be initialized.

Deinitialized 

Node is deinitialized (red)

DoInitialize 

Node should be initialized.

Initializing 

Node is currently initializing.

Initialized 

Node is initialized (green)

DoDeinitialize 

Node should be deinitialized.

Deinitializing 

Node is currently deinitializing.

DoShutdown 

Node should shut down.

Shutdown 

Node is shutting down.

Constructor & Destructor Documentation

◆ Node()

NAV::Node::Node ( std::string name)
explicit

Constructor.

Parameters
[in]nameName of the node

Member Function Documentation

◆ afterCreateLink()

virtual void NAV::Node::afterCreateLink ( OutputPin & startPin,
InputPin & endPin )
virtual

Called when a new link was established.

Parameters
[in]startPinPin where the link starts
[in]endPinPin where the link ends

Reimplemented in NAV::Plot.

◆ afterDeleteLink()

virtual void NAV::Node::afterDeleteLink ( OutputPin & startPin,
InputPin & endPin )
virtual

Called when a link was deleted.

Parameters
[in]startPinPin where the link starts
[in]endPinPin where the link ends

Reimplemented in NAV::Merger.

◆ doDeinitialize()

bool NAV::Node::doDeinitialize ( bool wait = false)

Asks the node worker to deinitialize the node.

Parameters
[in]waitWait for the worker to complete the request
Returns
True if the worker accepted the request

◆ doDisable()

bool NAV::Node::doDisable ( bool wait = false)

Asks the node worker to disable the node.

Parameters
[in]waitWait for the worker to complete the request
Returns
True if the worker accepted the request

◆ doEnable()

bool NAV::Node::doEnable ( )

Enable the node.

Returns
True if enabling was successful

◆ doInitialize()

bool NAV::Node::doInitialize ( bool wait = false)

Asks the node worker to initialize the node.

Parameters
[in]waitWait for the worker to complete the request
Returns
True if not waiting and the worker accepted the request otherwise if waiting only true if the node initialized correctly

◆ doReinitialize()

bool NAV::Node::doReinitialize ( bool wait = false)

Asks the node worker to reinitialize the node.

Parameters
[in]waitWait for the worker to complete the request
Returns
True if not waiting and the worker accepted the request otherwise if waiting only true if the node initialized correctly

◆ getInputValue()

template<typename T >
std::optional< InputPin::IncomingLink::ValueWrapper< T > > NAV::Node::getInputValue ( size_t portIndex) const
inline

Get Input Value connected on the pin. Only const data types.

Template Parameters
TType of the connected object
Parameters
[in]portIndexInput port where to retrieve the data from
Returns
Pointer to the object

◆ guiConfig()

◆ inputPinFromId()

InputPin & NAV::Node::inputPinFromId ( ax::NodeEditor::PinId pinId)

Returns the pin with the given id.

Parameters
[in]pinIdId of the Pin
Returns
The input pin

◆ inputPinIndexFromId()

size_t NAV::Node::inputPinIndexFromId ( ax::NodeEditor::PinId pinId) const

Returns the index of the pin.

Parameters
[in]pinIdId of the Pin
Returns
The index of the pin

◆ invokeCallbacks()

void NAV::Node::invokeCallbacks ( size_t portIndex,
const std::shared_ptr< const NodeData > & data )

Calls all registered callbacks on the specified output port.

Parameters
[in]portIndexOutput port where to call the callbacks
[in]dataThe data to pass to the callback targets

◆ notifyOutputValueChanged()

void NAV::Node::notifyOutputValueChanged ( size_t pinIdx,
const InsTime & insTime,
const std::scoped_lock< std::mutex > & guard )

Notifies connected nodes about the change.

Parameters
[in]pinIdxOutput Port index where to set the value
[in]insTimeTime the value was generated
[in]guardLock guard of the output data

◆ onCreateLink()

virtual bool NAV::Node::onCreateLink ( OutputPin & startPin,
InputPin & endPin )
virtual

Called when a new link is to be established.

Parameters
[in]startPinPin where the link starts
[in]endPinPin where the link ends
Returns
True if link is allowed, false if link is rejected

Reimplemented in NAV::VectorNavDataLogger, NAV::experimental::Delay, NAV::Demo, and NAV::Merger.

◆ onDeleteLink()

virtual void NAV::Node::onDeleteLink ( OutputPin & startPin,
InputPin & endPin )
virtual

Called when a link is to be deleted.

Parameters
[in]startPinPin where the link starts
[in]endPinPin where the link ends

Reimplemented in NAV::Demo.

◆ outputPinFromId()

OutputPin & NAV::Node::outputPinFromId ( ax::NodeEditor::PinId pinId)

Returns the pin with the given id.

Parameters
[in]pinIdId of the Pin
Returns
The output pin

◆ outputPinIndexFromId()

size_t NAV::Node::outputPinIndexFromId ( ax::NodeEditor::PinId pinId) const

Returns the index of the pin.

Parameters
[in]pinIdId of the Pin
Returns
The index of the pin

◆ releaseInputValue()

void NAV::Node::releaseInputValue ( size_t portIndex)

Unblocks the connected node. Has to be called when the input value should be released and getInputValue was not called.

Parameters
[in]portIndexInput port where the data should be released

◆ requestOutputValueLock()

std::scoped_lock< std::mutex > NAV::Node::requestOutputValueLock ( size_t pinIdx)

Blocks the thread till the output values was read by all connected nodes.

Parameters
[in]pinIdxOutput Pin index where to request the lock

◆ restore()

◆ restoreAtferLink()

virtual void NAV::Node::restoreAtferLink ( const json & j)
virtual

Restores link related properties of the node from a json object.

Parameters
[in]jJson object with the node state

◆ toString()

static std::string NAV::Node::toString ( State state)
static

Converts the state into a printable text.

Parameters
[in]stateState to convert
Returns
String representation of the state

Member Data Documentation

◆ _guiConfigDefaultWindowSize

ImVec2 NAV::Node::_guiConfigDefaultWindowSize
protected

The Default Window size for new config windows. Only set the variable if the object/window has no persistently saved data (no entry in .ini file)


The documentation for this class was generated from the following file: