MADARA  3.1.8
NddsTransportReadThread.h
Go to the documentation of this file.
1 #ifndef _NDDS_TRANSPORT_READ_THREAD_H_
2 #define _NDDS_TRANSPORT_READ_THREAD_H_
3 
4 #include <string>
5 
8 
9 #include <ndds/ndds_cpp.h>
10 #include "madara/transport/ndds/NddsKnowledgeUpdate.h"
11 #include "madara/transport/ndds/NddsKnowledgeUpdateSupport.h"
12 
13 #include "ace/Task.h"
14 #include "ace/Mutex.h"
15 #include "ace/Barrier.h"
16 #include "ace/Atomic_Op_T.h"
17 #include "ace/Thread_Mutex.h"
18 
19 #include "ace/Synch.h"
20 
21 namespace madara
22 {
23  namespace transport
24  {
30  class NDDSReadThread : public ACE_Task<ACE_MT_SYNCH>
31  {
32  public:
34  const std::string & id,
36  NDDSKnowledgeUpdateDataReader * reader);
37  ~NDDSReadThread ();
38 
40  int enter_barrier (void);
41  int close (void);
42  int svc (void);
43  void wait_for_ready (void);
44  private:
45  void handle_assignment (NDDSKnowledgeUpdate & data);
46  void handle_multiassignment (NDDSKnowledgeUpdate & data);
47 
48  ::std::vector< ::std::string> assignment_symbols_;
49 
53  ACE_Barrier barrier_;
54  ACE_Atomic_Op<ACE_Mutex,bool> terminated_;
55 
56  ACE_Thread_Mutex mutex_;
58  bool is_ready_;
60 
61  // NDDS variables
62  NDDSKnowledgeUpdateDataReader * data_reader_;
63  };
64  }
65 }
66 
67 #endif
void handle_multiassignment(NDDSKnowledgeUpdate &data)
NDDSKnowledgeUpdateDataReader * data_reader_
int enter_barrier(void)
service exit point for thread
knowledge::ThreadSafeContext & context_
This class stores variables and their values for use by any entity needing state information in a thr...
void handle_assignment(NDDSKnowledgeUpdate &data)
ACE_Condition< ACE_Thread_Mutex > Condition
Definition: Transport.h:53
NDDSReadThread(const std::string &id, knowledge::ThreadSafeContext &context, NDDSKnowledgeUpdateDataReader *reader)
static constexpr struct madara::knowledge::tags::string_t string
Thread for reading knowledge updates via a NDDS waitset (deprecated and unused).
ACE_Barrier barrier_
typdef for a threadsafe counter
Copyright (c) 2015 Carnegie Mellon University.
ACE_Atomic_Op< ACE_Mutex, bool > terminated_
::std::vector< ::std::string > assignment_symbols_