1
0
mirror of https://gitlab.com/obbart/universal_robots_ros_driver.git synced 2026-04-10 01:50:46 +02:00

Added clang formatting

This commit is contained in:
Simon Rasmussen
2017-02-16 02:03:40 +01:00
parent e00cfac0ee
commit a78d3eadf3
46 changed files with 4476 additions and 4212 deletions

View File

@@ -1,21 +1,20 @@
#pragma once
#include <thread>
#include <atomic>
#include <vector>
#include "ur_modern_driver/log.h"
#include "ur_modern_driver/queue/readerwriterqueue.h"
#include <atomic>
#include <thread>
#include <vector>
using namespace moodycamel;
using namespace moodycamel;
using namespace std;
template <typename T>
class IConsumer {
public:
virtual void setup_consumer() { }
virtual void teardown_consumer() { }
virtual void stop_consumer() { }
virtual void setup_consumer() {}
virtual void teardown_consumer() {}
virtual void stop_consumer() {}
virtual bool consume(unique_ptr<T> product) = 0;
};
@@ -23,33 +22,33 @@ public:
template <typename T>
class IProducer {
public:
virtual void setup_producer() { }
virtual void teardown_producer() { }
virtual void stop_producer() { }
virtual void setup_producer() {}
virtual void teardown_producer() {}
virtual void stop_producer() {}
virtual bool try_get(std::vector<unique_ptr<T>> &products) = 0;
virtual bool try_get(std::vector<unique_ptr<T> >& products) = 0;
};
template <typename T>
class Pipeline {
private:
IProducer<T> &_producer;
IConsumer<T> &_consumer;
BlockingReaderWriterQueue<unique_ptr<T>> _queue;
IProducer<T>& _producer;
IConsumer<T>& _consumer;
BlockingReaderWriterQueue<unique_ptr<T> > _queue;
atomic<bool> _running;
thread _pThread, _cThread;
void run_producer() {
void run_producer()
{
_producer.setup_producer();
std::vector<unique_ptr<T>> products;
while(_running) {
if(!_producer.try_get(products)) {
std::vector<unique_ptr<T> > products;
while (_running) {
if (!_producer.try_get(products)) {
break;
}
for(auto &p : products) {
if(!_queue.try_enqueue(std::move(p))) {
for (auto& p : products) {
if (!_queue.try_enqueue(std::move(p))) {
LOG_WARN("Pipeline owerflowed!");
}
}
@@ -60,27 +59,31 @@ private:
//todo cleanup
}
void run_consumer() {
void run_consumer()
{
_consumer.setup_consumer();
unique_ptr<T> product;
while(_running) {
while (_running) {
_queue.wait_dequeue(product);
if(!_consumer.consume(std::move(product)))
if (!_consumer.consume(std::move(product)))
break;
}
_consumer.teardown_consumer();
//todo cleanup
}
public:
Pipeline(IProducer<T> &producer, IConsumer<T> &consumer)
: _producer(producer),
_consumer(consumer),
_queue{32},
_running{false}
{ }
void run() {
if(_running)
public:
Pipeline(IProducer<T>& producer, IConsumer<T>& consumer)
: _producer(producer)
, _consumer(consumer)
, _queue{ 32 }
, _running{ false }
{
}
void run()
{
if (_running)
return;
_running = true;
@@ -88,10 +91,11 @@ public:
_cThread = thread(&Pipeline::run_consumer, this);
}
void stop() {
if(!_running)
void stop()
{
if (!_running)
return;
_consumer.stop_consumer();
_producer.stop_producer();