Revision: 8593
http://playerstage.svn.sourceforge.net/playerstage/?rev=8593&view=rev
Author: hsujohnhsu
Date: 2010-03-18 02:55:26 +0000 (Thu, 18 Mar 2010)
Log Message:
-----------
reinstate realTime comparison in Client::ConnectWait() as race condition is
evident in hudson test.
Modified Paths:
--------------
code/gazebo/trunk/libgazebo/Client.cc
Modified: code/gazebo/trunk/libgazebo/Client.cc
===================================================================
--- code/gazebo/trunk/libgazebo/Client.cc 2010-03-18 01:31:15 UTC (rev
8592)
+++ code/gazebo/trunk/libgazebo/Client.cc 2010-03-18 02:55:26 UTC (rev
8593)
@@ -85,6 +85,7 @@
void Client::ConnectWait(int serverId, int clientId)
{
bool simulationIfaceIsValid = false;
+ gazebo::SimulationIface *simIface = new gazebo::SimulationIface();
while (!simulationIfaceIsValid)
{
@@ -155,9 +156,36 @@
if(kill(pid, 0) == 0)
{
// a gazebo process is still alive.
- simulationIfaceIsValid = true;
- // it might however, still being booted up, so we need to check
somehow
- // or is it?
+ // it might however, still being booted up, so we need to check by
connecting
+ // Connect to gazebo::SimulationIface and check for changing
realTime,
+ // if simulationIface->data->realTime is not changing, the server
might
+ // be stale leftovers from previous gazebo crash,
+ // disconnect and reconnect client
+ try
+ {
+ // Open the Simulation Interface
+ gazebo::SimulationIface simulationIface;
+ simulationIface.Open(this,"default");
+ // grab a t0
+ simulationIface.Lock(1);
+ double simTime0 = simulationIface.data->realTime;
+ simulationIface.Unlock();
+ // now check and wait for sim time to change
+ usleep(10000);
+ simulationIface.Lock(1);
+ double simTime1 = simulationIface.data->realTime;
+ simulationIface.Unlock();
+ if (simTime0 != simTime1) // simTime changed, wait is over
+ simulationIfaceIsValid = true;
+ simulationIface.Close();
+
+ }
+ catch (std::string e)
+ {
+ //std::cout << "Gazebo error: Unable to connect to the sim
interface\n" << e << "\n";
+ }
+
+
}
else
{
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Download Intel® Parallel Studio Eval
Try the new software tools for yourself. Speed compiling, find bugs
proactively, and fine-tune applications for parallel performance.
See why Intel Parallel Studio got high marks during beta.
http://p.sf.net/sfu/intel-sw-dev
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit