67 std::shared_ptr<ProtectedQueue<T>> queue;
68 if( getInput(
"queue", queue) && queue )
70 std::unique_lock<std::mutex> lk(queue->mtx);
71 auto&
items = queue->items;
78 T val =
items.front();
80 setOutput(
"popped_item", val);
91 return { InputPort<std::shared_ptr<ProtectedQueue<T>>>(
"queue"),
92 OutputPort<T>(
"popped_item")};
107 template <
typename T>
118 std::shared_ptr<ProtectedQueue<T>> queue;
119 if( getInput(
"queue", queue) && queue )
121 std::unique_lock<std::mutex> lk(queue->mtx);
122 auto&
items = queue->items;
129 setOutput(
"size",
int(
items.size()) );
138 return { InputPort<std::shared_ptr<ProtectedQueue<T>>>(
"queue"),
139 OutputPort<int>(
"size")};
static pthread_mutex_t mutex
QueueSize(const std::string &name, const NodeConfiguration &config)
The SyncActionNode is an ActionNode that explicitly prevents the status RUNNING and doesn't require a...
PopFromQueue(const std::string &name, const NodeConfiguration &config)
NodeStatus tick() override
Method to be implemented by the user.
static PortsList providedPorts()
std::unordered_map< std::string, PortInfo > PortsList
NodeStatus tick() override
Method to be implemented by the user.
static PortsList providedPorts()