21 #include <tbb/spin_rw_mutex.h>
22 #include <tbb/spin_mutex.h>
23 #include <tbb/mutex.h>
24 #include <vl/publisherContainer.h>
25 #include <boost/signals2.hpp>
27 #include <vlpi/entityIdentifier.h>
30 #include <vl/rtiCompatibility.h>
39 class DtNonVrfUUIDResolver;
40 class DtVrlinkNetworkInterface;
41 class DtSimObjectNetInterfaceFactory;
72 myNetworkInterfaceDeletedConnection = myNetInterface->signal_networkInterfaceDeleted.connect(
73 boost::bind(&ParallelContainer::networkInterfaceDeleted,
this));
77 myNetworkInterfaceDeletedConnection.disconnect();
80 virtual void run()
override;
81 virtual void networkInterfaceDeleted();
90 if (!myParallelContainer)
95 return myParallelContainer;
109 virtual bool init(
const DtEntityIdentifier&
id = DtEntityIdentifier()) {
return true; }
113 DtHlaObjectWithStateRep* obj,
114 DtHlaObjectWithStateRep* extendedAttributes =
nullptr
130 virtual void onTick() = 0;
135 virtual bool isUnit()
const = 0;
136 virtual bool isEntity()
const = 0;
137 virtual bool isEnvironmental()
const = 0;
140 virtual bool wantsToCreatePublisher()
const = 0;
142 #if DtHLA_1516_EVOLVED
143 virtual bool checkForNameReservation();
151 virtual bool isLocal()
const = 0;
159 virtual int maxNameLength()
const;
162 virtual void toBeRemoved();
170 virtual RTI::ObjectClassHandle objectClassHandle()
const = 0;
180 static void setNonVrfObjectsUUIDScheme(
const DtString&);
181 static DtString nonVrfObjectsUUIDScheme();
192 static void addSimObjectNetInterfaceCreatorFcn(
const DtString & type,
205 static int maxNameLengthForInterfaceType(
const DtString& interfaceTypeString);
209 virtual void parallelTick();
210 virtual void forceUpdate();
216 virtual void sendFinalPduOnDestruction(
bool);
221 virtual void stateDataDestroyed();
223 bool runFullyThreaded()
const;
236 friend class DtPrintObjectStatusCommand;
237 friend class DtPrintOrgViewCommand;
247 bool isValid()
const {
return (mySimObject !=
nullptr); };
249 virtual std::vector<DtGlobalObjectDesignator> associatedGlobalObjectDesignators()
const;
static DtNonVrfUUIDResolver * theNonVrfUUIDResolver
Definition: simObjectNetInterface.h:258
virtual bool init(const DtEntityIdentifier &id=DtEntityIdentifier())
Derived classes that need to perform virtual construction my override this function as desired...
Definition: simObjectNetInterface.h:109
tbb::spin_mutex myTickMutex
Definition: simObjectNetInterface.h:84
const DtStateData * vrfObject() const
Definition: simObjectNetInterface.h:225
DtStateData * nextFrameVrfObject()
Definition: simObjectNetInterface.h:230
Definition: netInterfaceParallelLock.h:16
DtSimObjectNetInterface * myNetInterface
Definition: simObjectNetInterface.h:83
virtual bool init(DtHlaObjectWithStateRep *obj, DtHlaObjectWithStateRep *extendedAttributes=nullptr)
Definition: simObjectNetInterface.h:111
bool isValid() const
Definition: simObjectNetInterface.h:247
tbb::mutex myDeleteGuardMutex
Definition: simObjectNetInterface.h:264
ParallelContainer(DtSimObjectNetInterface *sd)
Definition: simObjectNetInterface.h:68
std::shared_ptr< CallbackInterface > Ptr
Definition: vrfCallbackQueue.h:61
class DtVrlinkNetworkInterface:
Definition: vrlinkNetworkInterface.h:72
Definition: simObjectNetInterface.h:65
DtVrfCallbackQueue::CallbackInterface::Ptr myParallelContainer
Definition: simObjectNetInterface.h:265
DtVrlinkNetworkInterface * myObjectManager
Definition: simObjectNetInterface.h:254
DtVrfCallbackQueue::CallbackInterface::Ptr parallelContainer()
Definition: simObjectNetInterface.h:88
The overall structure of the DtStateData mechanism is: The DtStateData contains a list of double buff...
Definition: stateData.h:398
static DtSimObjectNetInterfaceFactory * theFactory
Definition: simObjectNetInterface.h:257
API for writing callbacks.
Definition: vrfCallbackQueue.h:55
boost::signals2::connection mySimObjectRemovalConnection
Definition: simObjectNetInterface.h:263
Definition: nonVrfUUIDResolver.h:24
bool myNeedsNetworkSetup
Definition: simObjectNetInterface.h:260
Class Description: DtSimObjectNetInterface.
Definition: simObjectNetInterface.h:50
static tbb::spin_rw_mutex thePublisherTickMutex
Definition: simObjectNetInterface.h:245
#define DT_DLL_vrlinkNetworkInterface
This file is used to determine how to build.
Definition: vrlinkNetworkInterfaceDefines.h:24
static tbb::spin_rw_mutex thePublisherCreationMutex
Definition: simObjectNetInterface.h:244
virtual ~ParallelContainer() override
Definition: simObjectNetInterface.h:76
boost::signals2::connection myNetworkInterfaceDeletedConnection
Definition: simObjectNetInterface.h:85
DtStateData * mySimObject
Definition: simObjectNetInterface.h:253
virtual bool publishObject() const
Definition: simObjectNetInterface.h:164
DtStateRepository * myNetworkState
Definition: simObjectNetInterface.h:255
class DtSimObjectNetInterfaceFactory:
Definition: simObjectNetInterfaceFactory.h:26
DtSimObjectNetInterface *(* DtSimObjectNetIfaceCreatorFcn)(DtStateData *simObject, DtVrlinkNetworkInterface *mgr, bool publishObject)
Definition: simObjectNetInterfaceFactory.h:19
DtNetInterfaceParallelLock myLock
Definition: simObjectNetInterface.h:262
boost::signals2::signal< void()> signal_networkInterfaceDeleted
Definition: simObjectNetInterface.h:213