15 #pragma warning( disable : 4661 )
26 #include <vl/globalObjectDesignator.h>
36 #define TENA_TEMPLATE_LIST \
38 < class T_PortalObject \
39 , class T_PortalReflectedObject \
40 , class T_TenaReflectedObject \
41 , class T_TenaReflectedObjectList \
42 , class T_TenaObjectStateRepository \
43 , class T_TenaObjectPublisher>
45 #define TENA_TEMPLATE_FUNCTION \
46 T_PortalObject, T_PortalReflectedObject, \
47 T_TenaReflectedObject, T_TenaReflectedObjectList, \
48 T_TenaObjectStateRepository, T_TenaObjectPublisher
50 class DtStateRepository;
52 namespace MAKVrExchange
55 class DtRequestTranslationDiagnosticMessage;
57 namespace DtTenaBroker
62 class DtReflectedObject;
63 class DtObjectPublisher;
198 const T_PortalReflectedObject* refObj );
253 virtual DtEntityIdentifier
mapIdentifier(
const T_PortalReflectedObject* refObj,
257 virtual DtEntityIdentifier
mapObjectId(
const DtEntityIdentifier& identifier );
268 const T_PortalReflectedObject* refObj,
const DtEntityIdentifier&
name );
275 const T_PortalReflectedObject& refObj,
295 const T_TenaReflectedObject& refObj,
326 const T_TenaObjectStateRepository& sr );
328 const T_PortalObject& sr );
342 T_TenaReflectedObject* refObj );
349 const DtVector& location );
387 const DtPortalObject& incoming,
const DtStateRepository& outgoing )
const;
391 const DtStateRepository& incoming,
const DtPortalObject& outgoing )
const;
400 const DtStateRepository& outgoing );
416 virtual T_PortalObject*
translate( T_PortalObject* destination,
417 const T_TenaObjectStateRepository& source,
418 const T_TenaReflectedObject& refObj ) = 0;
422 virtual T_TenaObjectStateRepository*
translate(
423 T_TenaObjectStateRepository* destination,
const T_PortalObject& source,
424 const T_PortalReflectedObject& refObj ) = 0;
476 template <
class PortalInterType,
class TenaInterType>
539 virtual PortalInterType*
translate( PortalInterType* destination,
540 const TenaInterType& source ) = 0;
544 virtual TenaInterType*
translate( TenaInterType* destination,
545 const PortalInterType& source ) = 0;
549 const DtInteraction& outgoing )
const;
583 #define _tenaTranslator_INL_
584 #include <tenaBroker/tenaTranslator.inl>
585 #undef _tenaTranslator_INL_
TenaToPortalReflectedMap myPortalPublisherMap
Definition: tenaTranslator.h:451
static void tenaObjectUpdatedCb(T_TenaReflectedObject *refObj, void *usr)
Callback called when an object in the reflected list is updated.
bool operator!=(const DtTenaInteractionTranslator &rightOperand) const
Private Comparison Operator (Not implemented – Do Not Compare).
bool operator==(const DtTenaObjectTranslator &rightOperand) const
Private Comparison Operator (Not implemented – Do Not Compare).
virtual void createInteraction(const PortalInterType &inter)
This function is required for a translator to correctly publish objects from the portal to your proto...
Contains the templated DtPortalReflectedObjectManager types.
DtBaseInteractionTranslator< PortalInterType > BaseTranslatorClass
Typedef for the templated base class type.
Definition: tenaTranslator.h:486
std::map< const DtPortalReflectedObject *, DtBrokerObject * > PortalToTenaReflectedMap
Definition: tenaTranslator.h:449
virtual bool isTenaDiscoverable(const DtReflectedObject *refObj)
Creates broker object for reflected TENA object.
virtual void tick()
Ticks the publishers for the translated TENA and Portal objects.
virtual bool filterLocation(const DtReflectedObject &refObj, const DtVector &location)
Checks location filtering and returns the filtered state.
static void receiveTenaInteraction(TenaInterType *inter, void *usr)
virtual const DtGlobalObjectDesignator & convertGlobalId(const DtString &id)
Converts from PortalID to TENA ID (which is an Entity Identifier)
TransDebugObjectNamesSet myTransDebugNames
Definition: tenaTranslator.h:455
bool operator==(const DtTenaInteractionTranslator &rightOperand) const
Private Comparison Operator (Not implemented – Do Not Compare).
virtual void removeTenaCallbacks()
Used to request that brokers send translation diagnostic reports.
Definition: requestTransDiagnosticMessage.h:21
virtual DtString tenaObjectName(const T_PortalReflectedObject *refObj) const
Determines the name to use for the given reflected object.
Implements a DtBroker for the TENA Protocol.
Definition: tenaBroker.h:51
virtual DtEntityIdentifier mapObjectId(const DtEntityIdentifier &identifier)
Maps the entity IDs with respect to the remapTenaIds setting.
virtual void printIncomingOutgoingStateReps(const DtPortalObject &incoming, const DtStateRepository &outgoing) const
Print debug info for the given state reps.
static void tenaObjectAddedCb(T_TenaReflectedObject *refObj, void *usr)
Callback called when an object is added to the reflected list.
DtTenaInteractionTranslator< PortalInterType, TenaInterType > ParentClass
Typedef for the templated class type.
Definition: tenaTranslator.h:483
std::map< const DtReflectedObject *, LocationFilteringInfo > LocationFilteringMap
Definition: tenaTranslator.h:445
Provides container to hold pointers to Protocol/Portal objects.
Definition: brokerObject.h:24
DtTenaObjectTranslator(DtBroker *broker, const DtString &name, DtPortalMessageKind kind)
CTOR.
virtual void deleteTenaPublisher(DtBrokerObject *brokerObj)
static bool tenaDiscoveryCriteria(DtReflectedObject *refObj, void *usr)
The TENA reflected list's discovery condition callback.
virtual void shutdown()
Performs any virtual shutdown logic prior to deletion.
virtual void printDumpGuiToText(const DtBrokerObject &brokerObj, UpdateType ut) const
virtual DtTenaBroker * tenaBroker()
virtual bool performTenaGlobalIdMapping(const DtObjectPublisher *publisher, const T_PortalReflectedObject &refObj, DtGlobalIdMapper::ObjectType type=DtGlobalIdMapper::EntityType, int systemId=DtGlobalIdMapper::NoSystemId, int beamId=DtGlobalIdMapper::NoBeamId)
Maps the publisher's global ID to the reflected object's identifier.
T_TenaReflectedObjectList * myTenaReflectedList
Definition: tenaTranslator.h:442
virtual DtTenaBroker * tenaBroker()
virtual void removePortalObject(const T_PortalReflectedObject &refObj)
DtPortalObject are messages which also serve as state repositories for simulated objects.
Definition: pObject.h:23
ObjectType
Definition: tenaBroker/tenaBroker/globalIdMapper.h:55
virtual void printDumpGuiToText(const PortalInterType &inter)
virtual void shutdown()
Performs any virtual shutdown logic prior to deletion.
A simple template class to hold different types of State Repositories.
Definition: pObjectPublisher.h:68
DtBaseInteractionTranslator are responsible for translating messages for things that do not have stat...
Definition: baseInteractionTranslator.h:60
virtual bool isTenaPublishable(DtBrokerObject *brokerObj, const T_PortalReflectedObject *refObj)
Tests whether the object is publishable as a TENA object.
virtual void updateTenaBrokerObject(DtBrokerObject *brokerObj, const T_TenaObjectStateRepository &sr)
virtual void updatePortalBrokerObject(DtBrokerObject *brokerObj, const T_PortalObject &sr)
This callback is regarding an object Discovery.
Definition: tenaTranslator.h:98
An abstract interface for reflected objects.
Definition: pReflectedObject.h:31
virtual void initializeTenaCallbacks()
DtBroker * broker() const
Broker Accessor.
Definition: translator.h:80
DtPortalInteractions are a special type of DtPortalMessages which are used to transmit simulation dat...
Definition: pInteraction.h:21
LocationFilteringMap myLocationFilteringMap
Definition: tenaTranslator.h:446
Contains the DtInteractionTranslator and DtBaseInteractionTranslator class declarations.
PortalToTenaReflectedMap myTenaPublisherMap
Definition: tenaTranslator.h:452
virtual void printIncomingOutgoingInteractions(const DtPortalInteraction &incoming, const DtInteraction &outgoing) const
Prints incoming and outgoing interactions (before and after translation) to DtInfo.
virtual void discoverTenaObject(T_TenaReflectedObject &obj)
std::map< const DtReflectedObject *, DtBrokerObject * > TenaToPortalReflectedMap
Definition: tenaTranslator.h:448
virtual void createPortalInteraction(const TenaInterType &inter)
virtual void removeTenaCallbacks()
virtual T_PortalObject * translate(T_PortalObject *destination, const T_TenaObjectStateRepository &source, const T_TenaReflectedObject &refObj)=0
Translates the given TENA object to a Portal object (abstract).
virtual void enableReflectTranslator(bool enabled)
Enables or disables the translator reflecting from TENA.
DtTenaInteractionTranslator(DtBroker *broker, const DtString &name, DtPortalMessageKind kind)
CTOR.
virtual bool isEntityIdentifierValid(const DtEntityIdentifier &entityId) const
Test whether entityId is a valid TENA AMO uniqueId.
virtual void removeTenaObject(const DtReflectedObject &refObj)
bool operator!=(const DtTenaObjectTranslator &rightOperand) const
Private Comparison Operator (Not implemented – Do Not Compare).
virtual bool isThrottlingRateOk(T_TenaObjectPublisher *publisher, DtBrokerObject *brokerObj)
Checks if the throttling rate is ok for the given publisher.
virtual DtBrokerObject * findBrokerObject(const DtReflectedObject *refObj)
Find the broker object for the given reflected object.
virtual DtString portalObjectName(const T_TenaReflectedObject *refObj) const
Determines the name to use for the given reflected object.
virtual DtBrokerObject * createBrokerObject(const DtReflectedObject *refObj)
Creates a broker object for the given reflected object.
Base class for all broker objects.
Definition: broker.h:58
DtBaseObjectTranslators provide common logic for translating objects.
Definition: baseObjectTranslator.h:106
virtual void performPortalDebugging(const DtString &objectName)
Build and send debugging message for GUI debugging.
virtual bool isPortalDiscoverable(const DtPortalReflectedObject *refObj)
Creates broker object for reflected Portal object.
Base class for all TENA object translators.
Definition: tenaTranslator.h:88
virtual void receivePortalUpdate(const T_PortalReflectedObject &obj)
Contains the DtObjectTranslator and DtBaseObjectTranslator class declarations.
#define TENA_TEMPLATE_LIST
Definition: tenaTranslator.h:36
static void tenaObjectDeletedCb(T_TenaReflectedObject *refObj, void *usr)
Callback called when an object in the reflected list is deleted.
virtual void enableReflectTranslator(bool enabled)
Enables or disables the translator reflecting objects from TENA.
UpdateType
Enums used with the ObjectAction callback.
Definition: tenaTranslator.h:94
DtTenaInteractionTranslator & operator=(const DtTenaInteractionTranslator &other)
Private Assignment Operator (Not implemented – Do Not Copy).
Base class for all TENA interaction translators.
Definition: tenaTranslator.h:477
virtual void callObjectDiscoverCallbacks(const DtBrokerObject *obj)
Definition: tenaTranslator.h:96
Template Instances of DtPortalObjectPublisherTemplate.
Definition: tenaBroker/tenaBroker/globalIdMapper.h:57
virtual void callObjectUpdateCallbacks(const DtBrokerObject *obj)
std::pair< DtTime, bool > LocationFilteringInfo
Definition: tenaTranslator.h:444
DtTenaObjectTranslator< TENA_TEMPLATE_FUNCTION > ParentClass
Typedef for the templated class type.
Definition: tenaTranslator.h:103
Definition: tenaBroker/tenaBroker/globalIdMapper.h:52
virtual void createPortalPublisher(DtBrokerObject *brokerObj)
Determines the name to use for the given reflected object.
virtual PortalInterType * translate(PortalInterType *destination, const TenaInterType &source)=0
Translates the given TENA interaction to a Portal interaction (abstract).
virtual const DtGlobalObjectDesignator & convertGlobalId(const DtString &id)
Converts from PortalID to TENA ID (which is an Entity Identifier)
Definition: tenaTranslator.h:97
virtual void discoverPortalObject(const T_PortalReflectedObject &obj)
Definition: tenaBroker/tenaBroker/globalIdMapper.h:53
virtual DtObjectPublisher * instantiateTenaPublisher(const T_PortalReflectedObject *refObj, const DtEntityIdentifier &name)
Instantiates the publisher for the given reflected object.
DtTenaObjectTranslator & operator=(const DtTenaObjectTranslator &other)
Private Assignment Operator (Not implemented – Do Not Copy).
DtPortalMessageKind
A List of message kinds distributed with the Portal.
Definition: pMessageKinds.h:23
virtual void forceUpdateAll()
Tells all publishers to send an update next tick.
virtual ~DtTenaObjectTranslator()
Virtual DTOR.
virtual void callObjectRemoveCallbacks(const DtBrokerObject *obj)
virtual unsigned int numObjects() const
Returns the current number of objects.
static void requestTransDiagCb(const DtRequestTranslationDiagnosticMessage &msg, void *usr)
Static translation diagnostic request callback.
std::set< DtString > TransDebugObjectNamesSet
Definition: tenaTranslator.h:454
virtual DtBrokerObject * releaseBrokerObject(const DtReflectedObject *refObj)
Find the broker object for the given reflected object.
virtual ~DtTenaInteractionTranslator()
Virtual DTOR.
virtual DtEntityIdentifier mapIdentifier(const T_PortalReflectedObject *refObj, const DtString &identifier)
Maps the reflected object's global or entity identifier to a TENA id.
virtual void updateFilteredState(DtBrokerObject *brokerObj, DtPortalObjectPublisherTemplate< T_PortalObject > *publisher, T_TenaReflectedObject *refObj)
Ensures the given object is properly filtered.
virtual void createTenaPublisher(DtBrokerObject *brokerObj)
Determines the name to use for the given reflected object.
DtBaseObjectTranslator< T_PortalObject, T_PortalReflectedObject > BaseTranslatorClass
Typedef for the templated base class type.
Definition: tenaTranslator.h:106
virtual void receiveTenaUpdate(T_TenaReflectedObject &obj)
virtual bool performPortalGlobalIdMapping(const DtPortalObjectPublisherTemplate< T_PortalObject > *publisher, const T_TenaReflectedObject &refObj, DtGlobalIdMapper::ObjectType type=DtGlobalIdMapper::EntityType, int systemId=DtGlobalIdMapper::NoSystemId, int beamId=DtGlobalIdMapper::NoBeamId)
Maps the publisher's global ID to the reflected object's identifier.
virtual void deletePortalPublisher(DtBrokerObject *brokerObj)
virtual DtString name() const
Accessor for the translator's name.
virtual void initializeTenaCallbacks()