Thread: [complement-svn] SF.net SVN: complement: [1760] trunk/complement/explore/lib/janus/janus.cc
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2007-10-08 13:05:01
|
Revision: 1760 http://complement.svn.sourceforge.net/complement/?rev=1760&view=rev Author: complement Date: 2007-10-08 06:04:57 -0700 (Mon, 08 Oct 2007) Log Message: ----------- fix typo:: != -> == for request VS_MERGE_GROUP Modified Paths: -------------- trunk/complement/explore/lib/janus/janus.cc Modified: trunk/complement/explore/lib/janus/janus.cc =================================================================== --- trunk/complement/explore/lib/janus/janus.cc 2007-10-08 11:06:51 UTC (rev 1759) +++ trunk/complement/explore/lib/janus/janus.cc 2007-10-08 13:04:57 UTC (rev 1760) @@ -752,7 +752,7 @@ for ( gid_map_type::const_iterator i = grmap.begin(); i != grmap.end(); ++i ) { // for all groups, except vshosts_group, // and only once for earch group - if ( (i->first != vshosts_group) && (gcache.find( i->first) != gcache.end()) ) { + if ( (i->first != vshosts_group) && (gcache.find( i->first ) == gcache.end()) ) { e.value().grp = i->first; Send( e ); gcache.insert( i->first ); This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-10-09 12:55:15
|
Revision: 1763 http://complement.svn.sourceforge.net/complement/?rev=1763&view=rev Author: complement Date: 2007-10-09 05:55:14 -0700 (Tue, 09 Oct 2007) Log Message: ----------- notify remote janus about local group members from VSsync_group_time Modified Paths: -------------- trunk/complement/explore/lib/janus/janus.cc Modified: trunk/complement/explore/lib/janus/janus.cc =================================================================== --- trunk/complement/explore/lib/janus/janus.cc 2007-10-09 12:51:51 UTC (rev 1762) +++ trunk/complement/explore/lib/janus/janus.cc 2007-10-09 12:55:14 UTC (rev 1763) @@ -204,10 +204,13 @@ vt.next( from, grp ); // my counter for ( gid_map_type::const_iterator g = range.first; g != range.second; ++g ) { + cerr << "A1\n"; vt_map_type::iterator k = vtmap.find( g->second ); if ( k == vtmap.end() || k->second.stem_addr() == m.src() ) { // not for nobody and not for self + cerr << "A2\n"; continue; } + cerr << "A3\n"; try { vt.delta( m.value().gvt, from, g->second, grp ); @@ -868,8 +871,7 @@ #endif // __FIT_VS_TRACE pair<gid_map_type::const_iterator,gid_map_type::const_iterator> range = grmap.equal_range( grp ); if ( range.first != range.second ) { // we have local? member within this group - // const addr_type addr = e.src(); - // expected that addr correspond to remote Janus + const addr_type addr = e.src(); // expected that addr correspond to remote Janus // gaddr_type ga = manager()->reflect( addr ); // addr_type janus_addr = badaddr; @@ -887,7 +889,7 @@ // gvtime_type gvt_last; // stem::addr_type addr = stem::badaddr; stem::Event_base<VSsync_rq> e_rv( VS_OLD_MEMBER_RV ); - e_rv.dest( e.src() ); + e_rv.dest( /* janus_addr */ addr ); e_rv.value().grp = grp; bool sync = false; @@ -953,11 +955,31 @@ e.value().gvt.gvt = ev.value().gvt.gvt; e.value().mess = ev.value().mess; + // (stem) address of remote janus: + gaddr_type ga = manager()->reflect( addr ); + addr_type janus_addr = badaddr; + if ( ga != gaddr_type() ) { + ga.addr = stem::janus_addr; + janus_addr = manager()->reflect( ga ); + if ( janus_addr == badaddr ) { + janus_addr = manager()->SubscribeRemote( ga, "janus" ); + } + } + + stem::Event_base<VSsync_rq> e_rv( VS_OLD_MEMBER_RV ); + e_rv.dest( janus_addr ); + e_rv.value().grp = grp; + for ( ; range.first != range.second; ++range.first ) { vt_map_type::iterator i = vtmap.find( range.first->second ); - if ( i != vtmap.end() && ((i->second.stem_addr() & stem::extbit) == 0 )) { - e.dest( i->second.stem_addr() ); - Forward( e ); + if ( i != vtmap.end() ) { + stem::addr_type vs_addr = i->second.stem_addr(); + if ( (vs_addr & stem::extbit) == 0 ) { + e.dest( vs_addr ); + Forward( e ); // forward VS time from remote as VS_SYNC_TIME + e_rv.src( vs_addr ); + Forward( e_rv ); // inform remote janus about local group member + } } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |
From: <com...@us...> - 2007-10-09 13:10:11
|
Revision: 1764 http://complement.svn.sourceforge.net/complement/?rev=1764&view=rev Author: complement Date: 2007-10-09 06:10:09 -0700 (Tue, 09 Oct 2007) Log Message: ----------- remove debug print, add comments Modified Paths: -------------- trunk/complement/explore/lib/janus/janus.cc Modified: trunk/complement/explore/lib/janus/janus.cc =================================================================== --- trunk/complement/explore/lib/janus/janus.cc 2007-10-09 12:55:14 UTC (rev 1763) +++ trunk/complement/explore/lib/janus/janus.cc 2007-10-09 13:10:09 UTC (rev 1764) @@ -204,13 +204,10 @@ vt.next( from, grp ); // my counter for ( gid_map_type::const_iterator g = range.first; g != range.second; ++g ) { - cerr << "A1\n"; vt_map_type::iterator k = vtmap.find( g->second ); if ( k == vtmap.end() || k->second.stem_addr() == m.src() ) { // not for nobody and not for self - cerr << "A2\n"; continue; } - cerr << "A3\n"; try { vt.delta( m.value().gvt, from, g->second, grp ); @@ -897,19 +894,20 @@ for ( ; range.first != range.second; ++range.first ) { vt_map_type::iterator i = vtmap.find( range.first->second ); if ( i != vtmap.end() ) { - if ( (i->second.stem_addr() & stem::extbit) == 0 ) { - e_rv.src( i->second.stem_addr() ); - Forward( e_rv ); + stem::addr_type vs_addr = i->second.stem_addr(); + if ( (vs_addr & stem::extbit) == 0 ) { + e_rv.src( vs_addr ); + Forward( e_rv ); // inform remote janus about group member if ( !sync ) { // i->second.get_gvt( gvt ); // if ( gvt_last < gvt ) { // swap( gvt_last, gvt ); // addr = i->second.stem_addr(); // } - e.dest( i->second.stem_addr() ); - Forward( e ); + e.dest( vs_addr ); + Forward( e ); // request local VS Handler about request VS_MERGE_GROUP // return; - sync = true; + sync = true; // only one object informed, no need more } } } This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |