Revision: 7711
http://playerstage.svn.sourceforge.net/playerstage/?rev=7711&view=rev
Author: rtv
Date: 2009-05-23 00:19:58 +0000 (Sat, 23 May 2009)
Log Message:
-----------
moved to more STL containers
Modified Paths:
--------------
code/websim/examples/world.fed
code/websim/src/confederate.cc
code/websim/src/parser.cc
code/websim/src/puppet.cc
code/websim/src/websim.cc
code/websim/src/websim.hh
Modified: code/websim/examples/world.fed
===================================================================
--- code/websim/examples/world.fed 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/examples/world.fed 2009-05-23 00:19:58 UTC (rev 7711)
@@ -2,13 +2,16 @@
[federation]
deckard:8000=master
deckard:8001=slave1
-deckard:8002=slave2
-deckard:8003=slave3
+#deckard:8002=slave2
+#deckard:8003=slave3
[master]
-monkey=slave1:pioneer2dx;slave2:pioneer2dx
-chunky=slave1:pioneer2dx;slave2:pioneer2dx
-punky=slave1:pioneer2dx;slave2:pioneer2dx
+#monkey=slave1:pioneer2dx;slave2:pioneer2dx
+#chunky=slave1:pioneer2dx;slave2:pioneer2dx
+#punky=slave1:pioneer2dx;slave2:pioneer2dx
+monkey=slave1:pioneer2dx
+chunky=slave1:pioneer2dx
+punky=slave1:pioneer2dx
Modified: code/websim/src/confederate.cc
===================================================================
--- code/websim/src/confederate.cc 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/src/confederate.cc 2009-05-23 00:19:58 UTC (rev 7711)
@@ -189,8 +189,7 @@
while( ! puppet->created )
event_loop( EVLOOP_ONCE ); // loops until the request has completed
- puppet_list =
- g_list_append( puppet_list, puppet );
+ puppet_list.push_back( puppet );
}
void WebSim::Confederate::PuppetPushCallback( evhttp_request* req, void* arg )
Modified: code/websim/src/parser.cc
===================================================================
--- code/websim/src/parser.cc 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/src/parser.cc 2009-05-23 00:19:58 UTC (rev 7711)
@@ -85,7 +85,8 @@
assert(conf);
// copy the hash table key so we can delete the
original below
- g_hash_table_insert( confederates,
strdup(logicalname), conf );
+ //g_hash_table_insert( confederates,
strdup(logicalname), conf );
+ confederates[ logicalname ] = conf;
}
}
Modified: code/websim/src/puppet.cc
===================================================================
--- code/websim/src/puppet.cc 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/src/puppet.cc 2009-05-23 00:19:58 UTC (rev 7711)
@@ -38,18 +38,23 @@
created( false ),
confederates( NULL )
{
- g_hash_table_insert( ws->puppets, (void*)this->name.c_str(), this );
+ ws->puppets[name] = this;
printf( "Puppet \"%s\" constructed\n", this->name.c_str() );
}
+WebSim::Puppet::~Puppet()
+{
+ ws->puppets.erase( name );
+}
+
void WebSim::Puppet::Push( Pose p, Velocity v, Acceleration a )
{
- for( GList* it = confederates;
- it;
- it = it->next )
+ for( std::list<Confederate*>::iterator it = confederates.begin();
+ it != confederates.end();
+ ++it )
{
- Confederate* conf = (Confederate*)it->data;
- conf->Push( name, p, v, a );
+ // Confederate* conf = (Confederate*)it->data;
+ (*it)->Push( name, p, v, a );
}
}
@@ -57,7 +62,8 @@
const std::string& prototype )
{
conf->AddPuppet( this, prototype );
- confederates = g_list_append( confederates, conf );
+ //confederates = g_list_append( confederates, conf );
+ confederates.push_back( conf );
}
Modified: code/websim/src/websim.cc
===================================================================
--- code/websim/src/websim.cc 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/src/websim.cc 2009-05-23 00:19:58 UTC (rev 7711)
@@ -58,9 +58,11 @@
ticks_remaining(0),
host(_host),
port(_port),
- puppets( g_hash_table_new( g_str_hash, g_str_equal ) ),
- confederates( g_hash_table_new( g_str_hash, g_str_equal ) ),
- logical_hosts( g_hash_table_new( g_str_hash, g_str_equal ) ),
+ //puppets( g_hash_table_new( g_str_hash, g_str_equal ) ),
+ //confederates( g_hash_table_new( g_str_hash, g_str_equal ) ),
+ //logical_hosts( g_hash_table_new( g_str_hash, g_str_equal ) ),
+ puppets(),
+ confederates(),
unacknowledged_pushes(0),
unacknowledged_ticks(0),
total_ticks(0)
@@ -105,7 +107,12 @@
WebSim::Go()
{
// tick all my confederates
- ForEachConfederate( Confederate::TickCb, NULL );
+ //ForEachConfederate( Confederate::TickCb, NULL );
+
+ for( std::map<std::string,Confederate*>::iterator it = confederates.begin();
+ it != confederates.end();
+ it++ )
+ it->second->Tick();
}
void
@@ -987,26 +994,28 @@
return false;
}
-void WebSim::ForEachConfederate( void(*cb)(const std::string&,
WebSim::Confederate*, void*), void* arg )
-{
- g_hash_table_foreach( WebSim::confederates,
- (GHFunc)cb,
- arg );
-}
+// void WebSim::ForEachConfederate( void(*cb)(const std::string&,
WebSim::Confederate*, void*), void* arg )
+// {
+// g_hash_table_foreach( WebSim::confederates,
+// (GHFunc)cb,
+// arg );
+// }
-void WebSim::ForEachPuppet( void(*cb)(const std::string&, WebSim::Puppet*,
void*), void* arg )
-{
- g_hash_table_foreach( WebSim::puppets,
- (GHFunc)cb,
- arg );
-}
+// void WebSim::ForEachPuppet( void(*cb)(const std::string&, WebSim::Puppet*,
void*), void* arg )
+// {
+// g_hash_table_foreach( WebSim::puppets,
+// (GHFunc)cb,
+// arg );
+// }
WebSim::Puppet* WebSim::GetPuppet( const std::string& name )
{
- return( (Puppet*)g_hash_table_lookup( WebSim::puppets, name.c_str() ) );
+ //return( (Puppet*)g_hash_table_lookup( WebSim::puppets, name.c_str() ) );
+ return puppets[name];
}
WebSim::Confederate* WebSim::GetConfederate( const std::string& name )
{
- return( (Confederate*)g_hash_table_lookup( WebSim::confederates,
name.c_str() ) );
+ //return( (Confederate*)g_hash_table_lookup( WebSim::confederates,
name.c_str() ) );
+ return confederates[name];
}
Modified: code/websim/src/websim.hh
===================================================================
--- code/websim/src/websim.hh 2009-05-22 21:57:22 UTC (rev 7710)
+++ code/websim/src/websim.hh 2009-05-23 00:19:58 UTC (rev 7711)
@@ -28,6 +28,7 @@
#include <string>
#include <vector>
#include <map>
+#include <list>
// These headers must be included prior to the libevent headers
#include <sys/types.h>
@@ -225,7 +226,8 @@
public:
Puppet( WebSim* ws, const std::string& name );
-
+ ~Puppet();
+
// unique ID used as a system-wide handle for this puppet, used as
// hash table key
std::string name;
@@ -233,8 +235,9 @@
bool created;
// the remote servers that are hosting an instance of this puppet
- GList* confederates;
-
+ //GList* confederates;
+ std::list<Confederate*> confederates;
+
// sends the current physical state of the puppet to all
// confederates
void Push( Pose p, Velocity v, Acceleration a );
@@ -275,22 +278,22 @@
// list of pointers to Puppet objects that are hosted on this
// connection - can iterate over these to update all puppets
- GList* puppet_list;
-
+ //GList* puppet_list;
+ std::list<Puppet*> puppet_list;
+
// unique ID for this confederate in format "hostname:port", used as
// hash table key
std::string name;
};
- private:
- // static const unsigned short DEFAULT_PORT;
+ protected:
+// static const unsigned short DEFAULT_PORT;
static const std::string package;
static const std::string version;
-
- GHashTable* puppets;
- GHashTable* confederates;
- GHashTable* logical_hosts;
+ std::map<std::string,Puppet*> puppets;
+ std::map<std::string,Confederate*> confederates;
+
// counts the number of status messages sent and replies not yet received
int unacknowledged_pushes;
This was sent by the SourceForge.net collaborative development platform, the
world's largest Open Source development site.
------------------------------------------------------------------------------
Register Now for Creativity and Technology (CaT), June 3rd, NYC. CaT
is a gathering of tech-side developers & brand creativity professionals. Meet
the minds behind Google Creative Lab, Visual Complexity, Processing, &
iPhoneDevCamp asthey present alongside digital heavyweights like Barbarian
Group, R/GA, & Big Spaceship. http://www.creativitycat.com
_______________________________________________
Playerstage-commit mailing list
[email protected]
https://lists.sourceforge.net/lists/listinfo/playerstage-commit