00326       this->[xmlPrefix_](classGazeboROSNode.html#a56a97753f6fc5e55f80bc9dd4365cf9f "prefix and suffix used for conversion from URDF to Gazebo XML") = std::string("<?xml version='1.0'?> <gazebo:world xmlns:xi='http://www.w3.org/2001/XInclude' xmlns:gazebo='http://playerstage.sourceforge.net/gazebo/xmlschema/#gz' xmlns:model='http://playerstage.sourceforge.net/gazebo/xmlschema/#model' xmlns:sensor='http://playerstage.sourceforge.net/gazebo/xmlschema/#sensor' xmlns:body='http://playerstage.sourceforge.net/gazebo/xmlschema/#body' xmlns:geom='http://playerstage.sourceforge.net/gazebo/xmlschema/#geom' xmlns:joint='http://playerstage.sourceforge.net/gazebo/xmlschema/#joint' xmlns:interface='http://playerstage.sourceforge.net/gazebo/xmlschema/#interface' xmlns:rendering='http://playerstage.sourceforge.net/gazebo/xmlschema/#rendering' xmlns:renderable='http://playerstage.sourceforge.net/gazebo/xmlschema/#renderable' xmlns:controller='http://playerstage.sourceforge.net/gazebo/xmlschema/#controller' xmlns:physics='http://playerstage.sourceforge.net/gazebo/xmlschema/#physics' >");
    00327       this->[xmlSuffix_](classGazeboROSNode.html#a82f7515450366bb2ed7701429eaba99b) = std::string("</gazebo:world>");
    00328 
    00329       // reset topic connection counts
    00330       this->[pub_link_states_connection_count_](classGazeboROSNode.html#ac131709cfe171cca7a556620a9180d56) = 0;
    00331       this->[pub_model_states_connection_count_](classGazeboROSNode.html#a5c5117f163d5a790ffd92cb56073ca66) = 0;
    00332       this->[lastWrenchBodyUpdateTime](classGazeboROSNode.html#a10111db7cc35bc709eb1dd9f8ac6673d) = 0;
    00333       this->[lastForceJointUpdateTime](classGazeboROSNode.html#a05911ae1da87d03e4cd777417ee7ad89) = 0;
    00334     }
    00335 
    [00336](classGazeboROSNode.html#a425be7d364a037915a6542d887d3cf49)     [~GazeboROSNode](classGazeboROSNode.html#a425be7d364a037915a6542d887d3cf49)()
    00337     {
    00338       // disconnect slots
    00339       gazebo::World::Instance()->DisconnectWorldUpdateStartSignal(boost::bind(&[GazeboROSNode::wrenchBodySchedulerSlot](classGazeboROSNode.html#a39113e9e18f20d71c38aeeaecc17584b),this));
    00340       gazebo::World::Instance()->DisconnectWorldUpdateStartSignal(boost::bind(&[GazeboROSNode::forceJointSchedulerSlot](classGazeboROSNode.html#aee5784a84181a115059d6cf43a0cb67d),this));
    00341       gazebo::World::Instance()->DisconnectWorldUpdateStartSignal(boost::bind(&[GazeboROSNode::publishSimTime](classGazeboROSNode.html#a48733f4c02ab9c9976653dfd37c89e34),this));
    00342       if (this->[pub_link_states_connection_count_](classGazeboROSNode.html#ac131709cfe171cca7a556620a9180d56) > 0) // disconnect if there are subscribers on exit
    00343         gazebo::World::Instance()->DisconnectWorldUpdateStartSignal(boost::bind(&[GazeboROSNode::publishLinkStates](classGazeboROSNode.html#abdcedd88754decfd73b04c1e9d7f5023),this));
    00344       if (this->[pub_model_states_connection_count_](classGazeboROSNode.html#a5c5117f163d5a790ffd92cb56073ca66) > 0) // disconnect if there are subscribers on exit
    00345         gazebo::World::Instance()->DisconnectWorldUpdateStartSignal(boost::bind(&[GazeboROSNode::publishModelStates](classGazeboROSNode.html#a3dfb358eb77f12aa7f328aa0f6e712f0),this));
    00346 
    00347       // shutdown ros
    00348       this->[rosnode_](classGazeboROSNode.html#ae9011736edb2ec542d7176cdddeb546d).[shutdown](../../../api/roscpp/html/classros_1_1NodeHandle.html#a81d08224944993c4cd38589e68417e12)();
    00349 
    00350       // shutdown ros queue
    00351       this->[gazebo_callback_queue_thread_](classGazeboROSNode.html#a382ac60d7e343d5dc666c4cf3d399bf7)->join();
    00352       delete this->[gazebo_callback_queue_thread_](classGazeboROSNode.html#a382ac60d7e343d5dc666c4cf3d399bf7);
    00353 
    00354       this->[physics_reconfigure_thread_](classGazeboROSNode.html#abadd1aabaaa2353bccd4a48bc561e779)->join();
    00355       delete this->[physics_reconfigure_thread_](classGazeboROSNode.html#abadd1aabaaa2353bccd4a48bc561e779);
    00356 
    00357       this->[lock_](classGazeboROSNode.html#a3895043c9355e3e2a23f84efe0060736 "A mutex to lock access to fields that are used in ROS message callbacks.").lock();
    00358       for (std::vector<GazeboROSNode::ForceJointJob*>::iterator iter=this->[force_joint_jobs](classGazeboROSNode.html#a22ab41eec754d289d8c56f05045f480e).begin();iter!=this->[force_joint_jobs](classGazeboROSNode.html#a22ab41eec754d289d8c56f05045f480e).end();)
    00359       {
    00360         delete (*iter);
    00361         this->[force_joint_jobs](classGazeboROSNode.html#a22ab41eec754d289d8c56f05045f480e).erase(iter);
    00362       }
    00363       for (std::vector<GazeboROSNode::WrenchBodyJob*>::iterator iter=this->[wrench_body_jobs](classGazeboROSNode.html#ade2831b1970d2ceed871e82a9140c2bb).begin();iter!=this->[wrench_body_jobs](classGazeboROSNode.html#ade2831b1970d2ceed871e82a9140c2bb).end();)
    00364       {
    00365         delete (*iter);