MADARA  3.4.1
SpliceDDSTransport.h
Go to the documentation of this file.
1 #ifndef _MADARA_SPLICE_DDS_TRANSPORT_H__
2 #define _MADARA_SPLICE_DDS_TRANSPORT_H__
3 
4 #include <string>
5 
9 #include "ccpp_dds_dcps.h"
10 #include "madara/transport/splice/ccpp_SpliceKnowledgeUpdate.h"
12 
13 namespace madara
14 {
15 namespace transport
16 {
22 class SpliceDDSTransport : public Base
23 {
24 public:
25  enum
26  {
30  };
31 
32  static const int PROFILES = 2;
33 
43  bool launch_transport);
44 
49 
55  long send_data(const knowledge::KnowledgeMap& updates) override;
56 
61  int reliability(void) const;
62 
67  int reliability(const int& setting);
68 
72  void close(void);
73 
79  int setup(void);
80 
81 protected:
82 private:
85 
88 
89  const static char* topic_names_[];
90  const static char* partition_;
91  const static char* ret_code_names[];
92 
93  DDS::DomainParticipantQos part_qos_;
94  DDS::TopicQos topic_qos_;
95  DDS::PublisherQos pub_qos_;
96  DDS::DataWriterQos datawriter_qos_;
97  DDS::SubscriberQos sub_qos_;
98  DDS::DataReaderQos datareader_qos_;
99 
100  DDS::DomainId_t domain_;
101  DDS::DomainParticipantFactory_var domain_factory_;
102  DDS::DomainParticipant_var domain_participant_;
103  DDS::Publisher_var publisher_;
104  DDS::Subscriber_var subscriber_;
105  DDS::DataWriter_var datawriter_;
106  DDS::DataReader_var datareader_;
107  DDS::DataWriter_var latencywriter_;
108 
109  Knowledge::UpdateDataWriter_var update_writer_;
110  Knowledge::UpdateDataWriter_var latency_update_writer_;
111  Knowledge::UpdateDataReader_var update_reader_;
112  Knowledge::UpdateTypeSupport update_type_support_;
113 
114  DDS::Topic_var update_topic_;
115 
119  int check_handle(void* handle, const char* info);
120 
124  int check_status(DDS::ReturnCode_t status, const char* info);
125 
129  const char* get_error_name(DDS::ReturnCode_t status);
130 };
131 }
132 }
133 
134 #endif
This class provides a distributed knowledge base to users.
Definition: KnowledgeBase.h:45
This class stores variables and their values for use by any entity needing state information in a thr...
Starts threads with first class support of MADARA contexts.
Definition: Threader.h:36
Base class from which all transports must be derived.
Definition: Transport.h:46
This class provides an interface into the Open Splice dissemination transport.
Knowledge::UpdateDataReader_var update_reader_
DDS::DomainParticipant_var domain_participant_
SpliceDDSTransport(const std::string &id, knowledge::ThreadSafeContext &context, TransportSettings &config, bool launch_transport)
Constructor.
threads::Threader read_threads_
threads for reading knowledge updates
long send_data(const knowledge::KnowledgeMap &updates) override
Sends a list of knowledge updates to listeners.
int setup(void)
Activates this transport.
const char * get_error_name(DDS::ReturnCode_t status)
Returns error name of the specific status.
Knowledge::UpdateDataWriter_var update_writer_
Knowledge::UpdateTypeSupport update_type_support_
void close(void)
Closes this transport.
DDS::DomainParticipantFactory_var domain_factory_
int check_handle(void *handle, const char *info)
Splice handle checker.
int check_status(DDS::ReturnCode_t status, const char *info)
Splice status checker.
knowledge::KnowledgeBase knowledge_
knowledge base for threads to use
Knowledge::UpdateDataWriter_var latency_update_writer_
int reliability(void) const
Accesses reliability setting.
Holds basic transport settings.
constexpr string_t string
::std::map< std::string, KnowledgeRecord > KnowledgeMap
Copyright(c) 2020 Galois.