VR-Forces Developer's Guide
 All Classes Namespaces Files Functions Variables Typedefs Enumerations Enumerator Properties Friends Macros Groups Pages
vrfVrlinkGuiOrbatManager.h
Go to the documentation of this file.
1 /******************************************************************************
2 ** Copyright (c) 2017 MAK Technologies, Inc.
3 ** All rights reserved.
4 ******************************************************************************/
5 
9 
10 #pragma once
11 
14 #include <vrfutil/rwUUID.h>
15 #include <vrfutil/rwOrbatData.h>
16 #include <vlpi/entityIdentifier.h>
17 #include <vl/globalObjectDesignator.h>
20 
21 #include <boost/unordered_map.hpp>
22 
24 class DtSimMessage;
25 
26 namespace makVrv
27 {
28  class DtStateListener;
29 
30  namespace DT_PROTOCOL_NAMESPACE
31  {
32  class DtVrlinkConnection;
33  class DtVrlinkAggregateStateListener;
35  }
36 }
37 
38 namespace makVrf
39 {
40  namespace VRF_PROTOCOL_NAMESPACE
41  {
46  {
47  public:
48  struct OrbatRecord;
49 
50  typedef std::shared_ptr<OrbatRecord> OrbatRecordHandle;
51  typedef std::map<makVrv::DtElementID, OrbatRecordHandle> OrbatMapByUniqueID;
52  typedef std::map<DtUUID, OrbatRecordHandle> OrbatMapByUUID;
53  typedef std::map<DtUUID, std::set<DtUUID> > ParentToChildrenMap;
54 
55  struct OrbatRecord
56  {
58 
59  virtual ~OrbatRecord();
60 
62  {
63  return myElementID;
64  }
65 
66  const DtRwOrbatData& data() const;
67 
68  virtual const DtUUID& uuid() const;
69  virtual const DtUUID& orbatUUID() const;
70  virtual void setMarkingText(const DtString&);
71  virtual const DtString& markingText() const;
72 
73  virtual void setEntityType(const DtEntityType&);
74  virtual DtEntityType entityType() const;
75 
76  virtual void setForceType(int);
77  virtual int forceType() const;
78 
79  virtual void setParent(const DtUUID&);
80  virtual const DtUUID& parent() const;
81 
82  virtual void setOrbatOrder(int);
83  virtual int orbatOrder() const;
84 
85  virtual void slot_aboutToBeDestroyed();
86 
87  makVrv::DtUniqueID myElementID = 0;
88  DtStateData* myStateData = nullptr;
90  boost::signals2::connection myDeletedConnection;
91  };
92 
95 
98 
101 
103  virtual ~DtVrfVrlinkGuiOrbatManager() override;
104 
106  virtual void requestOrbatList();
107 
109  virtual bool isOrbatNode(makVrv::DtUniqueID) const;
110 
112  virtual void clearOrbatList();
113 
115  virtual void connectionCleanup();
116 
117  virtual void rediscoverObjects();
118 
119  protected:
121  static void receivedOrbatReponseMessage(DtSimMessage*, void* usr);
122  virtual void processReceivedOrbatResponse(DtSimMessage*);
123 
126  virtual void addToOrbat(const DtRwOrbatData&);
127 
129  virtual void removeFromOrbat(const DtUUID&);
130 
132  virtual void modifyInOrbat(const DtRwOrbatData&);
133 
134  virtual bool addToParent(const DtUUID& parent, const DtUUID& child);
135  virtual void removeFromParent(const DtUUID& parent, const DtUUID& child);
136  virtual void aggregateDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener);
137  virtual void aggregateDestroyed(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkAggregateStateListener& listener);
138 
139  virtual void entityDiscovered(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& listener);
140  virtual void entityDestroyed(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkEntityStateListener& listener);
141  virtual void slot_postConnectionTick();
142  virtual void slot_uuidChanged(const DtUUID& oldUUID, const DtUUID& newUUID);
143 
144  protected:
148 
151  std::vector<DtRwOrbatData> myQueuedSubordinateChanges;
152 
153  typedef std::map<makVrv::DtUniqueID, makVrv::DtUniqueID> PublishedObjectsMap;
154 
157  std::unordered_map<DtUUID, DtRwOrbatData> myOrbatData;
159 
160  boost::signals2::connection myAwaitingUUIDConnection;
161  std::set<makVrv::DtElementID> myAwaitingElementID;
162 
163  tbb::spin_mutex myUUIDChangedMutex;
164  boost::signals2::connection myPendingUUIDChangesConnection;
165  std::map<DtUUID, DtRwOrbatData> myPendingUUIDChanges;
166  };
167 
169  {
170  public:
173 
175 
178  static void registerInstance(makVrv::DT_PROTOCOL_NAMESPACE::DtVrlinkConnection& conn,
180 
182  };
183  }
184 }
UUID is a unique ID wrapper class.
Definition: uuid.h:59
Virtual base class. Allows for RTTI and proper virtual destruction. Used by Creators, Factories, Providers, Assemblers and User Interfaces.
Definition: DtVirtualBaseClass.h:19
#define VRF_PROTOCOL_EXPORT
Definition: vrfProtocol.h:21
Contains the DtUUID class declaration.
DtUniqueID DtElementID
The ElementID is a specific type of unique ID used to represent VR-Vantage uniquely defined elements...
Definition: DtUniqueID.h:23
#define DT_PROTOCOL_NAMESPACE
Contains defines and includes header files for protocols.
Definition: vrfProtocol.h:13
The main class for the remote control interface to VR-Forces. Instantiating this class allows the sen...
Definition: vrfRemoteController.h:206
Contains makVrv::DtVirtualBaseClass class.
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
#define VRF_PROTOCOL_NAMESPACE
Contains DLL export macros.
Definition: vrfDis.h:14
Definition: rwOrbatData.h:20
File: simMsg.h.
Definition: simMessage.h:35
Class to manage disconnection of boost connections on deletion.
Definition: DtSignalConnectionManager.h:20
unsigned long long DtUniqueID
Definition: DtUniqueID.h:19
Base class to provide boost signal/slot management.

Document ID: Generated on Thu Oct 23 22:29:17 EDT 2025 from SVN revision 280951
Copyright © 2005-2024 MAK Technologies. All Rights Reserved (www.mak.com)