VR-Exchange 2.5 API Documentation
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator 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 <vlOpenSplice/dllExport.h>
15 #include <vlOpenSplice/ddsUtils.h>
16 #include <matrix/vlTaitBryan.h>
17 #include <matrix/vlVector.h>
18 #include <vlutil/vlString.h>
19 #include <vlutil/vlTime.h>
20 #include <ccpp_dds_dcps.h>
21 #include <vector>
22 #include <map>
23 
24 class DtEntityStateRepository;
25 
26 namespace MAKVrExchange
27 {
28 
29  namespace DtDdsBroker
30  {
31 
32  class DtReflectedEntity;
33  class DtDdsDomainConnInitializer;
34 
36  {
37  public:
38 
39  typedef std::map<DtString,DtReflectedEntity*> DtReflectedEntityList;
40 
41  public:
42 
44 
45  virtual ~DtDdsDomainConnection();
46 
47  virtual void drainInput( DtTime timeout = -1 );
48 
49  virtual void send( const DtEntityStateRepository& entity );
50  virtual void send( simpleOM::simpleFireInteraction& fireInter );
51  virtual void send( simpleOM::simpleDetonationInteraction& detInter );
52 
53  virtual void sendFinal( const DtEntityStateRepository& entity );
54 
55  virtual DtClock* clock();
56 
57  virtual void addEntityAdditionCallback(
58  DtDdsCallbackFunction cb, void* userData );
59  virtual void removeEntityAdditionCallback(
60  DtDdsCallbackFunction cb, void* userData );
61 
62  virtual void addEntityRemovalCallback(
63  DtDdsCallbackFunction cb, void* userData );
64  virtual void removeEntityRemovalCallback(
65  DtDdsCallbackFunction cb, void* userData );
66 
67  virtual void addDetonationCallback(
68  DtDdsCallbackFunction cb, void* userData );
69  virtual void removeDetonationCallback(
70  DtDdsCallbackFunction cb, void* userData );
71 
72  virtual void addWeaponFireCallback(
73  DtDdsCallbackFunction cb, void* userData );
74  virtual void removeWeaponFireCallback(
75  DtDdsCallbackFunction cb, void* userData );
76 
77  DtReflectedEntityList& reflectedEntities();
78  DtReflectedEntityList& publishedEntities();
79 
80  protected:
81 
82  template <typename ReaderType>
83  unsigned int readAndProcess( ReaderType* reader );
84 
85  virtual bool encodeEntityState( const DtEntityStateRepository& esr,
86  simpleOM::simpleBaseEntity& instanceData );
87  virtual bool decodeEntityState( const simpleOM::simpleBaseEntity& instanceData,
88  DtEntityStateRepository* esr );
89 
90  virtual DtReflectedEntity* addReflectedObject( const char* id );
91  virtual void removeReflectedObject( const char* id );
92 
93  protected:
94 
95  typedef std::map<DDS::Condition*,DDS::DataReader*> DataReaderMap;
97 
99  DtClock* myClock;
100 
101  // DDS objects
102  DDS::DomainId_t myDomain;
103  DDS::DomainParticipantFactory_ptr myDomParticipantFactory;
104  DDS::DomainParticipant_ptr myDomParticipant;
105  DDS::Publisher_ptr myPub;
106  DDS::Subscriber_ptr mySub;
107  DDS::PublisherQos myPubQos;
108  DDS::SubscriberQos mySubQos;
109  DDS::SampleInfoSeq_var myInfoList;
110  DDS::WaitSet myWaitSet;
111 
112  // Application-specific simpleOM objects
116  DDS::StatusCondition_ptr myBaseEntityStatusCond;
117  DDS::Topic_ptr myBaseTopic;
118 
122  DDS::StatusCondition_ptr myDetStatusCond;
123  DDS::Topic_ptr myDetTopic;
124 
128  DDS::StatusCondition_ptr myFireStatusCond;
129  DDS::Topic_ptr myFireTopic;
130 
132 
135 
136  typedef std::pair<simpleOM::simpleBaseEntity*,DDS::InstanceHandle_t> InstanceHandlePair;
137  typedef std::map<const DtEntityStateRepository*,InstanceHandlePair> EntityInstanceMap;
139 
140  typedef std::vector<DtDdsCbInfo*> DdsCallbackList;
145 
146  };
147 
148  }
149 }

Document ID: Generated on Wed Dec 21 15:05:11 EST 2016 from SVN revision 171891
Copyright © 2005-2016 VT MÄK. All Rights Reserved (www.mak.com)