pipeline.h
Go to the documentation of this file.
1 #pragma once
2 
3 #include <chrono>
4 #include <condition_variable>
5 #include <thread>
6 #include <vector>
7 #include <memory>
8 #include <mutex>
9 #include <ros/ros.h>
11 #include "pf_driver/pf/writer.h"
12 #include "pf_driver/pf/reader.h"
13 
14 class PFPacket;
15 
16 class Pipeline
17 {
18 public:
19  Pipeline(std::shared_ptr<Writer<PFPacket>> writer, std::shared_ptr<Reader<PFPacket>> reader,
20  std::function<void()> func, std::shared_ptr<std::mutex> net_mtx,
21  std::shared_ptr<std::condition_variable> net_cv, bool& net_fail);
22 
23  bool start();
24 
25  void terminate();
26 
27  bool is_running();
28 
29  void on_shutdown();
30 
31 private:
33  std::shared_ptr<Reader<PFPacket>> reader_;
34  std::shared_ptr<Writer<PFPacket>> writer_;
35  std::function<void()> shutdown;
36  std::atomic<bool> running_, shutdown_;
38  std::mutex mutex_;
39  std::shared_ptr<std::mutex> net_mtx_;
40  std::shared_ptr<std::condition_variable> net_cv_;
41  bool& net_fail_;
42 
43  void run_writer();
44 
45  void run_reader();
46 };
std::atomic< bool > running_
Definition: pipeline.h:36
std::thread reader_thread_
Definition: pipeline.h:37
std::atomic< bool > shutdown_
Definition: pipeline.h:36
Definition: writer.h:7
std::shared_ptr< Reader< PFPacket > > reader_
Definition: pipeline.h:33
std::shared_ptr< std::condition_variable > net_cv_
Definition: pipeline.h:40
void terminate()
Definition: pipeline.cpp:40
bool & net_fail_
Definition: pipeline.h:41
moodycamel::BlockingReaderWriterQueue< std::unique_ptr< PFPacket > > queue_
Definition: pipeline.h:32
std::shared_ptr< Writer< PFPacket > > writer_
Definition: pipeline.h:34
bool start()
Definition: pipeline.cpp:20
std::shared_ptr< std::mutex > net_mtx_
Definition: pipeline.h:39
void run_writer()
Definition: pipeline.cpp:69
std::thread writer_thread_
Definition: pipeline.h:37
bool is_running()
Definition: pipeline.cpp:55
void on_shutdown()
Definition: pipeline.cpp:60
std::function< void()> shutdown
Definition: pipeline.h:35
std::mutex mutex_
Definition: pipeline.h:38
Pipeline(std::shared_ptr< Writer< PFPacket >> writer, std::shared_ptr< Reader< PFPacket >> reader, std::function< void()> func, std::shared_ptr< std::mutex > net_mtx, std::shared_ptr< std::condition_variable > net_cv, bool &net_fail)
Definition: pipeline.cpp:5
void run_reader()
Definition: pipeline.cpp:98


pf_driver
Author(s): Harsh Deshpande
autogenerated on Fri Feb 24 2023 03:59:35