[complement-svn] SF.net SVN: complement: [1581] trunk/complement/explore/test/virtual_time
Status: Pre-Alpha
Brought to you by:
complement
From: <com...@us...> - 2007-06-05 16:20:18
|
Revision: 1581 http://svn.sourceforge.net/complement/?rev=1581&view=rev Author: complement Date: 2007-06-05 09:20:15 -0700 (Tue, 05 Jun 2007) Log Message: ----------- dev Modified Paths: -------------- trunk/complement/explore/test/virtual_time/vtime.cc trunk/complement/explore/test/virtual_time/vtime.h trunk/complement/explore/test/virtual_time/vtime_main.cc Modified: trunk/complement/explore/test/virtual_time/vtime.cc =================================================================== --- trunk/complement/explore/test/virtual_time/vtime.cc 2007-06-04 16:49:00 UTC (rev 1580) +++ trunk/complement/explore/test/virtual_time/vtime.cc 2007-06-05 16:20:15 UTC (rev 1581) @@ -242,48 +242,49 @@ return *this; } -vtime_unit_type comp( const gvtime_type& gvt, group_type g, oid_type p ) +void Proc::mess( const stem::Event_base<VTmess>& ev ) { - gvtime_type::const_iterator k = gvt.begin(); - for ( ; k != gvt.end(); ++k ) { - if ( k->first == g ) { - for ( vtime_type::const_iterator i = k->second.vt.begin(); i != k->second.vt.end(); ++i ) { - if ( i->first == p ) { - return i->second; // found (p_i, t) in g_k - } else if ( i->first > p ) { - return 0; // pair sorted, so no pair required (p_i, t) expected more - } - } - return 0; // no pair (p_i, * ) - } else if ( k->first > g ) { // groups sorted, so no required group expected more - return 0; - } - } + cout << self_id() << " " << ev.value().mess << endl; - return 0; + cout << ev.value().gvt.gvt << endl; + + cout << order_correct( ev ) << endl; + + // if ( order_correct( ev ) ) { + // + // } } - -void Proc::mess( const stem::Event_base<VTmess>& ev ) +bool Proc::order_correct( const stem::Event_base<VTmess>& ev ) { - cout << ev.value().mess << endl; + // 1. - cout << ev.value().gvt.gvt << endl; + gvtime gvt( ev.value().gvt ); - cout << order_correct( ev ) << endl; + if ( vt.gvt[ev.value().grp][ev.src()] + 1 != gvt[ev.value().grp][ev.src()] ) { + return false; + } - if ( order_correct( ev ) ) { - gvtime_type::const_iterator gr = ev.value().gvt.gvt.begin(); - gvtime_type::const_iterator ge = ev.value().gvt.gvt.end(); - for ( ; gr != ge; ++gr ) { // over all groups - // vt[gr->first] = max( vt[gr->first], vt[gr->first] + gr->second.vt ); + vtime xvt = lvt[ev.value().grp] + gvt[ev.value().grp]; + xvt[ev.src()] = 0; + + if ( !(xvt <= vt[ev.value().grp]) ) { + return false; + } + + // change: iteration through all groups of this object (not the same as below) + for ( groups_container_type::const_iterator l = groups.begin(); l != groups.end(); ++l ) { + if ( *l != ev.value().grp ) { + xvt = lvt[*l] + gvt[*l]; + if ( !(xvt <= vt[*l]) ) { + return false; + } } } -} -bool Proc::order_correct( const stem::Event_base<VTmess>& ev ) -{ - return false; + // lvt += gvt; + + return true; } DEFINE_RESPONSE_TABLE( Proc ) Modified: trunk/complement/explore/test/virtual_time/vtime.h =================================================================== --- trunk/complement/explore/test/virtual_time/vtime.h 2007-06-04 16:49:00 UTC (rev 1580) +++ trunk/complement/explore/test/virtual_time/vtime.h 2007-06-05 16:20:15 UTC (rev 1581) @@ -88,7 +88,6 @@ // typedef std::list<vtime_group_type> gvtime_type; typedef std::hash_map<group_type, vtime> gvtime_type; -vtime_unit_type comp( const gvtime_type&, group_type, oid_type ); gvtime_type& operator +=( gvtime_type&, const gvtime_type::value_type& ); struct gvtime : @@ -110,6 +109,9 @@ gvtime& operator +=( const gvtime_type::value_type& ); + gvtime_type::data_type& operator[]( const gvtime_type::key_type k ) + { return gvt[k]; } + gvtime_type gvt; }; @@ -144,23 +146,21 @@ stem::EventHandler( id ) { } + void add_group( group_type g ) + { groups.push_back( g ); } + void mess( const stem::Event_base<VTmess>& ); + typedef std::list<group_type> groups_container_type; + private: - bool order_correct( const stem::Event_base<VTmess>& ); + bool order_correct( const stem::Event_base<VTmess>& ); - enum vtgroup { - first_group, - second_group, - n_groups - }; + gvtime lvt; + gvtime vt; + groups_container_type groups; - // vtime_type vt[n_groups]; - gvtime_type lvt; - gvtime_type vt; - // vtime_type last_vt[n_groups]; - // gvtime_type last_vt; DECLARE_RESPONSE_TABLE( Proc, stem::EventHandler ); }; Modified: trunk/complement/explore/test/virtual_time/vtime_main.cc =================================================================== --- trunk/complement/explore/test/virtual_time/vtime_main.cc 2007-06-04 16:49:00 UTC (rev 1580) +++ trunk/complement/explore/test/virtual_time/vtime_main.cc 2007-06-05 16:20:15 UTC (rev 1581) @@ -18,28 +18,35 @@ Proc m1( 100 ); Proc m2( 101 ); Proc r1( 102 ); - Proc r3( 103 ); + Proc r2( 103 ); + m1.add_group( 0 ); + m2.add_group( 0 ); + r1.add_group( 0 ); + + m1.add_group( 1 ); + m2.add_group( 1 ); + r2.add_group( 1 ); + stem::Event_base<VTmess> mess( MESS ); - mess.dest( 101 ); + mess.dest( m2.self_id() ); - // gvtime_type::value_type gvt; - - // gvt.first = 0; // group - // gvt.second += make_pair( 100, 1 ); - mess.value().mess = "Hello!"; mess.value().grp = 0; - mess.value().gvt.gvt[0][100] = 1; + mess.value().gvt.gvt[0][m1.self_id()] = 1; m1.Send( mess ); - mess.value().gvt.gvt[0][100] += 1; + mess.dest( r1.self_id() ); - mess.value().mess = "How are you?"; m1.Send( mess ); + // mess.value().gvt.gvt[0][m1.self_id()] += 1; + + // mess.value().mess = "How are you?"; + // m1.Send( mess ); + cnd.wait(); return 0; This was sent by the SourceForge.net collaborative development platform, the world's largest Open Source development site. |