WebLVC 1.7d API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
ddsDomainConnection.h
Go to the documentation of this file.
1 /****************************************************************************
2  * Copyright (c) 2016 VT MAK
3  * All rights reserved.
4  ****************************************************************************/
5 
9 
10 #pragma once
11 
12 #include <vlDds/dllExport.h>
13 
14 #include <vlDds/ddsCallbackInfo.h>
15 #include <vlDds/ddsUtils.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <matrix/vlVector.h>
18 #include <vlutil/vlString.h>
19 #include <vlutil/vlTime.h>
20 
21 #include <vector>
22 #include <map>
23 
24 #ifdef DtDDS_RTI
25 #include <vlDds/ccpp_simpleOM.h>
26 #include "ndds/ndds_cpp.h"
27 #else
28 #include <dds_dcps.h>
29 #include <ccpp_WaitSet.h>
30 #include <vlDds/simpleOM.h>
31 #include <ccpp_DomainParticipantFactory.h>
33 #endif
34 
35 class DtEntityStateRepository;
36 
37 namespace MAKVrExchange
38 {
39 
40  namespace DtDdsBroker
41  {
42 
43  class DtReflectedEntity;
44  class DtDdsDomainConnInitializer;
45 
47  {
48  public:
49 
50  typedef std::map<DtString,DtReflectedEntity*> DtReflectedEntityList;
51 
52  public:
53 
55 
56  virtual ~DtDdsDomainConnection();
57 
58  virtual void drainInput( DtTime timeout = -1 );
59 
60  virtual void send( const DtEntityStateRepository& entity );
61  virtual void send( simpleOM::simpleFireInteraction& fireInter );
62  virtual void send( simpleOM::simpleDetonationInteraction& detInter );
63 
64  virtual void sendFinal( const DtEntityStateRepository& entity );
65 
66  virtual DtClock* clock();
67 
68  virtual void addEntityAdditionCallback(
69  DtDdsCallbackFunction cb, void* userData );
70  virtual void removeEntityAdditionCallback(
71  DtDdsCallbackFunction cb, void* userData );
72 
73  virtual void addEntityRemovalCallback(
74  DtDdsCallbackFunction cb, void* userData );
75  virtual void removeEntityRemovalCallback(
76  DtDdsCallbackFunction cb, void* userData );
77 
78  virtual void addDetonationCallback(
79  DtDdsCallbackFunction cb, void* userData );
80  virtual void removeDetonationCallback(
81  DtDdsCallbackFunction cb, void* userData );
82 
83  virtual void addWeaponFireCallback(
84  DtDdsCallbackFunction cb, void* userData );
85  virtual void removeWeaponFireCallback(
86  DtDdsCallbackFunction cb, void* userData );
87 
88  DtReflectedEntityList& reflectedEntities();
89  DtReflectedEntityList& publishedEntities();
90 
91  protected:
92 
93  template <typename ReaderType>
94  unsigned int readAndProcess( ReaderType* reader );
95 
96  virtual bool encodeEntityState( const DtEntityStateRepository& esr,
97  simpleOM::simpleBaseEntity& instanceData );
98  virtual bool decodeEntityState( const simpleOM::simpleBaseEntity& instanceData,
99  DtEntityStateRepository* esr );
100 
101  virtual DtReflectedEntity* addReflectedObject( const char* id );
102  virtual void removeReflectedObject( const char* id );
103 
104  protected:
105 
107  DtClock* myClock;
108 
109 #ifdef DtDDS_RTI
110  typedef std::map<DDS_Condition*,DDS_DataReader*> DataReaderMap;
111 
112  // DDS objects
113  DDS_DomainId_t myDomain;
114  //DDS_DomainParticipantFactory_ptr myDomParticipantFactory;
115  DDSDomainParticipantFactory* myDomParticipantFactory;
116  DDSDomainParticipant* myDomParticipant;
117  DDSPublisher* myPub;
118  DDSSubscriber* mySub;
119  DDS_PublisherQos myPubQos;
120  DDS_SubscriberQos mySubQos;
121  //DDS_SampleInfoSeq_var myInfoList;
122  DDS_SampleInfoSeq myInfoList;
123  DDSWaitSet* myWaitSet;
124 
125  // Application-specific simpleOM objects
126  simpleOM::simpleBaseEntityTypeSupport* myBaseTopicDataType;
127  simpleOM::simpleBaseEntityDataReader* myBaseEntityReader;
128  simpleOM::simpleBaseEntityDataWriter* myBaseEntityWriter;
129  DDSStatusCondition* myBaseEntityStatusCond;
130  DDSTopic* myBaseTopic;
131 
132  simpleOM::simpleDetonationInteractionTypeSupport* myDetTopicDataType;
133  simpleOM::simpleDetonationInteractionDataReader* myDetReader;
134  simpleOM::simpleDetonationInteractionDataWriter* myDetWriter;
135  DDSStatusCondition* myDetStatusCond;
136  DDSTopic* myDetTopic;
137 
138  simpleOM::simpleFireInteractionTypeSupport* myFireTopicDataType;
139  simpleOM::simpleFireInteractionDataReader* myFireReader;
140  simpleOM::simpleFireInteractionDataWriter* myFireWriter;
141  DDSStatusCondition* myFireStatusCond;
142  DDSTopic* myFireTopic;
143 
144  typedef std::pair<simpleOM::simpleBaseEntity*,DDS_InstanceHandle_t> InstanceHandlePair;
145 #elif DtDDS_OPENSPLICE
146  typedef std::map<DDS::Condition*,DDS::DataReader*> DataReaderMap;
147 
148  // DDS objects
149  DDS::DomainId_t myDomain;
150  DDS::DomainParticipantFactory_ptr myDomParticipantFactory;
151  DDS::DomainParticipant_ptr myDomParticipant;
152  DDS::Publisher_ptr myPub;
153  DDS::Subscriber_ptr mySub;
154  DDS::PublisherQos myPubQos;
155  DDS::SubscriberQos mySubQos;
156  DDS::SampleInfoSeq_var myInfoList;
157  DDS::WaitSet myWaitSet;
158 
159  // Application-specific simpleOM objects
160  simpleOM::simpleBaseEntityTypeSupport myBaseTopicDataType;
161  simpleOM::simpleBaseEntityDataReader_ptr myBaseEntityReader;
162  simpleOM::simpleBaseEntityDataWriter_ptr myBaseEntityWriter;
163  DDS::StatusCondition_ptr myBaseEntityStatusCond;
164  DDS::Topic_ptr myBaseTopic;
165 
166  simpleOM::simpleDetonationInteractionTypeSupport myDetTopicDataType;
167  simpleOM::simpleDetonationInteractionDataReader_ptr myDetReader;
168  simpleOM::simpleDetonationInteractionDataWriter_ptr myDetWriter;
169  DDS::StatusCondition_ptr myDetStatusCond;
170  DDS::Topic_ptr myDetTopic;
171 
172  simpleOM::simpleFireInteractionTypeSupport myFireTopicDataType;
173  simpleOM::simpleFireInteractionDataReader_ptr myFireReader;
174  simpleOM::simpleFireInteractionDataWriter_ptr myFireWriter;
175  DDS::StatusCondition_ptr myFireStatusCond;
176  DDS::Topic_ptr myFireTopic;
177 
178  typedef std::pair<simpleOM::simpleBaseEntity*,DDS::InstanceHandle_t> InstanceHandlePair;
179 #endif
180  DataReaderMap myDataReaders;
182 
185 
186  typedef std::map<const DtEntityStateRepository*,InstanceHandlePair> EntityInstanceMap;
188 
189  typedef std::vector<DtDdsCbInfo*> DdsCallbackList;
194 
195  };
196 
197  }
198 }
EntityInstanceMap myEntityInstanceMap
Definition: ddsDomainConnection.h:187
Contains the DtDdsCbInfo class declaration.
DdsCallbackList myDetonationCallbacks
Definition: ddsDomainConnection.h:192
std::map< const DtEntityStateRepository *, InstanceHandlePair > EntityInstanceMap
Definition: ddsDomainConnection.h:186
std::map< DtString, DtReflectedEntity * > DtReflectedEntityList
Definition: ddsDomainConnection.h:50
std::vector< DtDdsCbInfo * > DdsCallbackList
Definition: ddsDomainConnection.h:189
DtReflectedEntityList myReflectedEntityList
Definition: ddsDomainConnection.h:183
Contains the utility methods for converting DDS types to VR-Link.
DtString myPartitionName
Definition: ddsDomainConnection.h:106
Definition: ddsBroker/vlDds/reflectedEntity.h:37
unsigned int myMostRecentlyCheckedCondition
Definition: ddsDomainConnection.h:181
DtReflectedEntityList myPublishedEntityList
Definition: ddsDomainConnection.h:184
#define DT_DLL_VLDDS
Definition: brokers/ddsBroker/vlDds/dllExport.h:20
DdsCallbackList myObjectAdditionCallbacks
Definition: ddsDomainConnection.h:190
void(* DtDdsCallbackFunction)(void *obj, void *userData)
Generic callback function signature.
Definition: ddsCallbackInfo.h:15
Definition: ddsDomainConnectionInitializer.h:23
Definition: ddsDomainConnection.h:46
DataReaderMap myDataReaders
Definition: ddsDomainConnection.h:180
DdsCallbackList myWeaponFireCallbacks
Definition: ddsDomainConnection.h:193
DtClock * myClock
Definition: ddsDomainConnection.h:107
DdsCallbackList myObjectRemovalCallbacks
Definition: ddsDomainConnection.h:191

Document ID: Generated on Wed Jun 21 15:05:44 EDT 2023 from SVN revision 256253
Copyright © 2005-2023 MAK Technologies. All Rights Reserved (www.mak.com)