Contains macros for making translator creation easier.
More...
Go to the source code of this file.
|
| #define | DT_DECLARE_PORTAL_CALLBACKS(DtBrokerObjectNamespace, DtPortalReflectedObjType) |
| |
| #define | DT_DEFINE_CREATE_PORTAL_PUBLISHER(DtTranslatorClass, DtBrokerObjectNamespace, DtPortalObjectType, DtReflectedObject) |
| |
| #define | DT_DEFINE_IS_PORTAL_PUBLISHABLE(DtTranslatorClass, DtBrokerObjectNamespace, Protocol) |
| |
| #define | DT_DEFINE_DELETE_PORTAL_PUBLISHER(DtTranslatorClass, DtBrokerObjectNamespace, DtPortalObjectType) |
| |
| #define | DT_DEFINE_DISCOVER_PORTAL_OBJECT(DtTranslatorClass, DtBrokerObjectNamespace, DtPortalReflectedObjType, DtProtocol) |
| |
| #define | DT_DEFINE_RECEIVE_PORTAL_UPDATE(DtTranslatorClass, DtBrokerObjectNamespace, DtPortalReflectedObjType, DtPortalObjType, DtProtocolPublisher, DtProtocolStateRepository, DtProtocol) |
| |
| #define | DT_DEFINE_PORTAL_CALLBACKS(DtTranslatorClass, DtPortalReflectedObjType, DtTemplates) |
| |
| #define | DT_TICK_ALL_PUBLISHERS(DtPublisherContainerType, DtBrokerObjectNamespace, DtPublisherContainer, DtPublisherType) |
| |
| #define | DT_DECLARE_INTERACTION_PORTAL_CALLBACKS(DtPortalInteractionType, DtInteractionType) |
| |
| #define | DT_DEFINE_CREATE_PORTAL_INTERACTION(DtTranslatorClass, DtPortalInteractionType, DtInteractionType, DtObjectKind) |
| |
| #define | DT_DEFINE_RECEIVE_PORTAL_INTERACTION(DtTranslatorClass, DtPortalInteractionType, DtProtocol) |
| |
Contains macros for making translator creation easier.
| #define DT_DECLARE_INTERACTION_PORTAL_CALLBACKS |
( |
|
DtPortalInteractionType, |
|
|
|
DtInteractionType |
|
) |
| |
Value:virtual void createPortalInteraction( const DtInteractionType& incomming ); \
static void receivePortalInteraction( const DtPortalInteractionType& inter, void* usr );
| #define DT_DECLARE_PORTAL_CALLBACKS |
( |
|
DtBrokerObjectNamespace, |
|
|
|
DtPortalReflectedObjType |
|
) |
| |
Value:virtual void createPortalPublisher(DtBrokerObjectNamespace::DtBrokerObject* brokerObject); \
virtual bool isPortalPublishable(const DtBrokerObjectNamespace::DtBrokerObject* brokerObject) const; \
virtual void deletePortalPublisher(DtBrokerObjectNamespace::DtBrokerObject* brokerObject); \
virtual void discoverPortalObject(const DtPortalReflectedObjType &obj); \
virtual void receivePortalUpdate(const DtPortalReflectedObjType &obj); \
\
static void portalObjectAddedCb(const DtPortalReflectedObjType &obj, void *ud); \
static void portalObjectUpdatedCb(const DtPortalReflectedObjType &obj, void *ud); \
static void portalObjectDeletedCb(const DtPortalReflectedObjType &obj, void *ud);
| #define DT_DEFINE_CREATE_PORTAL_INTERACTION |
( |
|
DtTranslatorClass, |
|
|
|
DtPortalInteractionType, |
|
|
|
DtInteractionType, |
|
|
|
DtObjectKind |
|
) |
| |
Value:void DtTranslatorClass::createPortalInteraction( const DtInteractionType& in ) \
{ \
DtPortalInteractionType out; \
out.setKind( DtObjectKind ); \
\
translate( &out, in ); \
\
if ( broker()->isTranslatorDebuggingOn(name()) ) \
{ \
printIncomingOutgoingInteractions( in, out ); \
} \
broker()->portalConnection()->send( out ); \
}
| #define DT_DEFINE_CREATE_PORTAL_PUBLISHER |
( |
|
DtTranslatorClass, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
DtPortalObjectType, |
|
|
|
DtReflectedObject |
|
) |
| |
Value:void DtTranslatorClass::createPortalPublisher( DtBrokerObjectNamespace::DtBrokerObject *brokerObject ) \
{ \
MAKVrExchange::DtPortalObjectPublisherTemplate<DtPortalObjectType> *publisher = \
\
const DtReflectedObject* reflectedObj = \
static_cast<const DtReflectedObject*>( brokerObject->reflectedObjPtr() ); \
\
publisher->
sr()->setIdentifier(reflectedObj->globalId()); \
brokerObject->setPublisherPtr(publisher); \
}
A simple template class to hold different types of State Repositories.
Definition: pObjectPublisher.h:68
virtual T_PortalObject * sr()
| #define DT_DEFINE_DELETE_PORTAL_PUBLISHER |
( |
|
DtTranslatorClass, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
DtPortalObjectType |
|
) |
| |
Value:void DtTranslatorClass::deletePortalPublisher(DtBrokerObjectNamespace::DtBrokerObject* brokerObject) \
{ \
MAKVrExchange::DtPortalObjectPublisherTemplate<DtPortalObjectType> *publisher = \
\
if (publisher) \
{ \
DtDELETE( publisher ); \
brokerObject->setPublisherPtr( publisher ); \
} \
}
A simple template class to hold different types of State Repositories.
Definition: pObjectPublisher.h:68
| #define DT_DEFINE_DISCOVER_PORTAL_OBJECT |
( |
|
DtTranslatorClass, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
DtPortalReflectedObjType, |
|
|
|
DtProtocol |
|
) |
| |
Value:void DtTranslatorClass::discoverPortalObject(const DtPortalReflectedObjType &refObj) \
{ \
DtBrokerObjectNamespace::DtBrokerObject* brokerObject = findBrokerObject(&refObj); \
if (!brokerObject) \
{ \
brokerObject = createBrokerObject(&refObj); \
} \
\
brokerObject->setLastUpdate(myBroker->simTime()); \
brokerObject->setObjectName(refObj.sr()->identifier()); \
brokerObject->setIsDiscovered(true); \
\
create##DtProtocol##Publisher( brokerObject ); \
\
refObj.addUpdateCallback(DtTranslatorClass::portalObjectUpdatedCb, this); \
receivePortalUpdate(refObj); \
}
| #define DT_DEFINE_IS_PORTAL_PUBLISHABLE |
( |
|
DtTranslatorClass, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
Protocol |
|
) |
| |
Value:bool DtTranslatorClass::isPortalPublishable( const DtBrokerObjectNamespace::DtBrokerObject *brokerObject ) const \
{ \
assert( brokerObject->protocol() == DtBrokerObjectNamespace::DtBrokerObject::Protocol );\
return true;\
}
| #define DT_DEFINE_PORTAL_CALLBACKS |
( |
|
DtTranslatorClass, |
|
|
|
DtPortalReflectedObjType, |
|
|
|
DtTemplates |
|
) |
| |
Value:DtTemplates \
void DtTranslatorClass::portalObjectAddedCb( const DtPortalReflectedObjType& reflectedObj, void* ud ) \
{ \
DtTranslatorClass* et = (DtTranslatorClass*) ud; \
et->discoverPortalObject( reflectedObj ); \
}; \
\
DtTemplates \
void DtTranslatorClass::portalObjectUpdatedCb( const DtPortalReflectedObjType& reflectedObj, void* ud ) \
{ \
DtTranslatorClass* et = (DtTranslatorClass*) ud; \
et->receivePortalUpdate( reflectedObj ); \
}; \
\
DtTemplates \
void DtTranslatorClass::portalObjectDeletedCb( const DtPortalReflectedObjType& reflectedObj, void* ud ) \
{ \
DtTranslatorClass* et = (DtTranslatorClass*) ud; \
et->removePortalObject( &reflectedObj ); \
}
| #define DT_DEFINE_RECEIVE_PORTAL_INTERACTION |
( |
|
DtTranslatorClass, |
|
|
|
DtPortalInteractionType, |
|
|
|
DtProtocol |
|
) |
| |
Value:void DtTranslatorClass::receivePortalInteraction( \
const DtPortalInteractionType& inter, void* usr ) \
{ \
DtTranslatorClass* trans = (DtTranslatorClass*) usr; \
trans->create##DtProtocol##Interaction( inter ); \
}
| #define DT_DEFINE_RECEIVE_PORTAL_UPDATE |
( |
|
DtTranslatorClass, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
DtPortalReflectedObjType, |
|
|
|
DtPortalObjType, |
|
|
|
DtProtocolPublisher, |
|
|
|
DtProtocolStateRepository, |
|
|
|
DtProtocol |
|
) |
| |
| #define DT_TICK_ALL_PUBLISHERS |
( |
|
DtPublisherContainerType, |
|
|
|
DtBrokerObjectNamespace, |
|
|
|
DtPublisherContainer, |
|
|
|
DtPublisherType |
|
) |
| |
Value:DtPublisherContainerType::iterator pubItr = DtPublisherContainer.begin(); \
DtPublisherContainerType::iterator pubEnd = DtPublisherContainer.end(); \
for ( ; pubItr != pubEnd; ++pubItr ) \
{ \
DtBrokerObjectNamespace::DtBrokerObject* brokerObject = pubItr->second; \
DtPublisherType* publisher = static_cast<DtPublisherType*>( brokerObject->publisherPtr() ); \
if ( publisher && brokerObject->isPublishable() ) \
{ \
publisher->tick(); \
} \
}