//------------------------------------------------------------------------------ // unPublishAndSubscribe() //------------------------------------------------------------------------------ bool NetIO::unPublishAndSubscribe() { bool ok = true; try { // Un-publish and un-subscribe all object classes for (unsigned int i = 1; i <= MAX_CLASSES; i++) { RTI::ObjectClassHandle handle = getObjectClassHandle(i); if (handle > 0) { if (isObjectClassPublished(i)) { getRTIambassador()->unpublishObjectClass(handle); setObjectClassPublished(i,false); } if (isObjectClassSubscribed(i)) { getRTIambassador()->unsubscribeObjectClass(handle); setObjectClassSubscribed(i,false); } } } // Un-publish and un-subscribe all interaction classes for (unsigned int i = 1; i <= MAX_INTERACTIONS; i++) { RTI::InteractionClassHandle handle = getInteractionClassHandle(i); if (handle > 0) { if (isInteractionClassPublished(i)) { getRTIambassador()->unpublishInteractionClass(handle); setInteractionClassPublished(i,false); } if (isInteractionClassSubscribed(i)) { getRTIambassador()->unsubscribeInteractionClass(handle); setInteractionClassSubscribed(i,false); } } } } catch(RTI::Exception& e) { std::cout << &e << std::endl; ok = false; } return ok; }
//------------------------------------------------------------------------------ // publishAndSubscribe() //------------------------------------------------------------------------------ bool NetIO::publishAndSubscribeMunitionDetonation() { RTI::RTIambassador* p = getRTIambassador(); bool ok = true; // ---------- // Get handles to the class, attributes and parameters // ---------- try { // --- // Munition detonation Interaction class handle and parameter handles // --- { RTI::InteractionClassHandle handle = p->getInteractionClassHandle(MunitionDetonation::getInteractionFedName()); setInteractionClassHandle(MUNITION_DETONATION_INTERACTION, handle ); setInteractionParameterHandle( DETONATION_LOCATION_MD_PI, p->getParameterHandle( MunitionDetonation::getDetonationLocationParameterFedName(), handle) ); setInteractionParameterHandle( DETONATION_RESULT_CODE_MD_PI, p->getParameterHandle( MunitionDetonation::getDetonationResultCodeParameterFedName(), handle) ); setInteractionParameterHandle( EVENT_IDENTIFIER_MD_PI, p->getParameterHandle( MunitionDetonation::getEventIdentifierParameterFedName(), handle) ); setInteractionParameterHandle( FIRING_OBJECT_IDENTIFIER_MD_PI, p->getParameterHandle( MunitionDetonation::getFiringObjectIdentifierParameterFedName(), handle) ); setInteractionParameterHandle( FINAL_VELOCITY_VECTOR_MD_PI, p->getParameterHandle( MunitionDetonation::getFinalVelocityVectorParameterFedName(), handle) ); setInteractionParameterHandle( FUSE_TYPE_MD_PI, p->getParameterHandle( MunitionDetonation::getFuseTypeParameterFedName(), handle) ); setInteractionParameterHandle( MUNITION_OBJECT_IDENTIFIER_MD_PI, p->getParameterHandle( MunitionDetonation::getMunitionObjectIdentifierParameterFedName(), handle) ); setInteractionParameterHandle( MUNITION_TYPE_MD_PI, p->getParameterHandle( MunitionDetonation::getMunitionTypeParameterFedName(), handle) ); setInteractionParameterHandle( QUANTITY_FIRED_MD_PI, p->getParameterHandle( MunitionDetonation::getQuantityFiredParameterFedName(), handle) ); setInteractionParameterHandle( RATE_OF_FIRE_MD_PI, p->getParameterHandle( MunitionDetonation::getRateOfFireParameterFedName(), handle) ); setInteractionParameterHandle( RELATIVE_DETONATION_LOCATION_MD_PI, p->getParameterHandle( MunitionDetonation::getRelativeDetonationLocationParameterFedName(), handle) ); setInteractionParameterHandle( TARGET_OBJECT_IDENTIFIER_MD_PI, p->getParameterHandle( MunitionDetonation::getTargetObjectIdentifierParameterFedName(), handle) ); setInteractionParameterHandle( WARHEAD_TYPE_MD_PI, p->getParameterHandle( MunitionDetonation::getWarheadTypeParameterFedName(), handle) ); } } catch( RTI::Exception& e) { std::cerr << &e << std::endl; ok = false; } // ---------- // Publish & Subscribe to class attributes // ---------- if (ok) { try { // --- // Publish these interactions // --- if (isOutputEnabled()) { p->publishInteractionClass(getInteractionClassHandle(MUNITION_DETONATION_INTERACTION)); setInteractionClassPublished(MUNITION_DETONATION_INTERACTION, true); } // --- // Subscribe to these interactions // --- if (isInputEnabled()) { p->subscribeInteractionClass(getInteractionClassHandle(MUNITION_DETONATION_INTERACTION)); setInteractionClassSubscribed(MUNITION_DETONATION_INTERACTION, true); } } catch (RTI::Exception& e) { std::cerr << &e << std::endl; ok = false; } } return ok; }