Classes | |
| class | Chord |
| Chord overlay module. More... | |
| class | ChordFingerTable |
| Chord's finger table module. More... | |
| struct | SuccessorListEntry |
| class | ChordSuccessorList |
| Chord's successor list module. More... | |
| class | Koorde |
| Koorde overlay module. More... | |
| class | Nice |
| NICE overlay module. More... | |
| class | NicePeerInfo |
Typedefs | |
| typedef std::multimap < simtime_t, NodeHandle > | Successors |
| typedef std::pair< NodeHandle, Successors > | FingerEntry |
| typedef std::pair< unsigned int, double > | HeartbeatEvaluator |
Functions | |
| Define_Module (Chord) | |
| Define_Module (ChordFingerTable) | |
| Define_Module (ChordSuccessorList) | |
| std::ostream & | operator<< (std::ostream &os, const SuccessorListEntry &e) |
| Define_Module (Koorde) | |
| template<class BidIt > | |
| bool | next_combination (BidIt n_begin, BidIt n_end, BidIt r_begin, BidIt r_end) |
| template<class BidIt , class Prediate > | |
| bool | next_combination (BidIt n_begin, BidIt n_end, BidIt r_begin, BidIt r_end, Prediate Equal) |
| template<class BidIt > | |
| bool | prev_combination (BidIt n_begin, BidIt n_end, BidIt r_begin, BidIt r_end) |
| template<class BidIt , class Prediate > | |
| bool | prev_combination (BidIt n_begin, BidIt n_end, BidIt r_begin, BidIt r_end, Prediate Equal) |
| template<class RanIt , class Func > | |
| void | recursive_combination (RanIt nbegin, RanIt nend, int n_column, RanIt rbegin, RanIt rend, int r_column, int loop, Func func) |
| Define_Module (Nice) | |
| std::ostream & | operator<< (std::ostream &os, NicePeerInfo &pi) |
Variables | |
| const char * | clustercolors [] |
| Define colors for layers in visualization. | |
| const char * | clusterarrows [] |
| typedef std::pair<NodeHandle, Successors> oversim::FingerEntry |
Definition at line 40 of file ChordFingerTable.h.
| typedef std::pair<unsigned int, double> oversim::HeartbeatEvaluator |
Definition at line 41 of file NicePeerInfo.h.
| typedef std::multimap<simtime_t, NodeHandle> oversim::Successors |
Definition at line 39 of file ChordFingerTable.h.
| oversim::Define_Module | ( | Chord | ) |
| oversim::Define_Module | ( | ChordFingerTable | ) |
| oversim::Define_Module | ( | Koorde | ) |
| oversim::Define_Module | ( | Nice | ) |
| oversim::Define_Module | ( | ChordSuccessorList | ) |
| bool oversim::next_combination | ( | BidIt | n_begin, | |
| BidIt | n_end, | |||
| BidIt | r_begin, | |||
| BidIt | r_end | |||
| ) | [inline] |
Definition at line 24 of file combination.h.
Referenced by oversim::Nice::ClusterSplit().
{
bool boolmarked=false;
BidIt r_marked;
BidIt n_it1=n_end;
--n_it1;
BidIt tmp_r_end=r_end;
--tmp_r_end;
for(BidIt r_it1=tmp_r_end; r_it1!=r_begin || r_it1==r_begin; --r_it1,--n_it1)
{
if(*r_it1==*n_it1 )
{
if(r_it1!=r_begin) //to ensure not at the start of r sequence
{
boolmarked=true;
r_marked=(--r_it1);
++r_it1;//add it back again
continue;
}
else // it means it is at the start the sequence, so return false
return false;
}
else //if(*r_it1!=*n_it1 )
{
//marked code
if(boolmarked==true)
{
//for loop to find which marked is in the first sequence
BidIt n_marked;//mark in first sequence
for (BidIt n_it2=n_begin;n_it2!=n_end;++n_it2)
if(*r_marked==*n_it2) {n_marked=n_it2;break;}
BidIt n_it3=++n_marked;
for (BidIt r_it2=r_marked;r_it2!=r_end;++r_it2,++n_it3)
{
*r_it2=*n_it3;
}
return true;
}
for(BidIt n_it4=n_begin; n_it4!=n_end; ++n_it4)
if(*r_it1==*n_it4)
{
*r_it1=*(++n_it4);
return true;
}
}
}
return true;//will never reach here
}
| bool oversim::next_combination | ( | BidIt | n_begin, | |
| BidIt | n_end, | |||
| BidIt | r_begin, | |||
| BidIt | r_end, | |||
| Prediate | Equal | |||
| ) | [inline] |
Definition at line 85 of file combination.h.
{
bool boolmarked=false;
BidIt r_marked;
BidIt n_it1=n_end;
--n_it1;
BidIt tmp_r_end=r_end;
--tmp_r_end;
for(BidIt r_it1=tmp_r_end; r_it1!=r_begin || r_it1==r_begin; --r_it1,--n_it1)
{
if( Equal( *r_it1, *n_it1) )
{
if(r_it1!=r_begin) //to ensure not at the start of r sequence
{
boolmarked=true;
r_marked=(--r_it1);
++r_it1;//add it back again
continue;
}
else // it means it is at the start the sequence, so return false
return false;
}
else //if(*r_it1!=*n_it1 )
{
//marked code
if(boolmarked==true)
{
//for loop to find which marked is in the first sequence
BidIt n_marked;//mark in first sequence
for (BidIt n_it2=n_begin;n_it2!=n_end;++n_it2)
if( Equal( *r_marked, *n_it2) ) {n_marked=n_it2;break;}
BidIt n_it3=++n_marked;
for (BidIt r_it2=r_marked;r_it2!=r_end;++r_it2,++n_it3)
{
*r_it2=*n_it3;
}
return true;
}
for(BidIt n_it4=n_begin; n_it4!=n_end; ++n_it4)
if( Equal(*r_it1, *n_it4) )
{
*r_it1=*(++n_it4);
return true;
}
}
}
return true;//will never reach here
}
| std::ostream & oversim::operator<< | ( | std::ostream & | os, | |
| const SuccessorListEntry & | e | |||
| ) |
| std::ostream& oversim::operator<< | ( | std::ostream & | os, | |
| NicePeerInfo & | pi | |||
| ) |
Definition at line 251 of file NicePeerInfo.cc.
{
os << "distance: " << pi.distance << endl;
os << "des: " << pi.distance_estimation_start << endl;
os << "last_rcv: " << pi.get_last_recv_HB() << endl;
os << "last_sent: " << pi.get_last_sent_HB() << endl;
os << "last_HB: " << pi.get_last_HB_arrival() << endl;
os << "backHB[0].seqNo: " << pi.get_backHB_seqNo(0) << endl;
os << "backHB[0].time: " << pi.get_backHB(pi.get_backHB_seqNo(0)) << endl;
os << "backHB[1].seqNo: " << pi.get_backHB_seqNo(1) << endl;
os << "backHB[1].time: " << pi.get_backHB(pi.get_backHB_seqNo(1)) << endl;
os << "activity: " << pi.getActivity() << endl;
std::map<TransportAddress, double>::iterator it = pi.distanceTable.begin();
while (it != pi.distanceTable.end()) {
os << it->first << " : " << it->second << endl;
it++;
}
return os;
}
| bool oversim::prev_combination | ( | BidIt | n_begin, | |
| BidIt | n_end, | |||
| BidIt | r_begin, | |||
| BidIt | r_end | |||
| ) | [inline] |
Definition at line 151 of file combination.h.
{
bool boolsame=false;
BidIt marked;//for r
BidIt r_marked;
BidIt n_marked;
BidIt tmp_n_end=n_end;
--tmp_n_end;
BidIt r_it1=r_end;
--r_it1;
for(BidIt n_it1=tmp_n_end; n_it1!=n_begin || n_it1==n_begin ; --n_it1)
{
if(*r_it1==*n_it1)
{
r_marked=r_it1;
n_marked=n_it1;
break;
}
}
BidIt n_it2=n_marked;
BidIt tmp_r_end=r_end;
--tmp_r_end;
for(BidIt r_it2=r_marked; r_it2!=r_begin || r_it2==r_begin; --r_it2,--n_it2)
{
if(*r_it2==*n_it2 )
{
if(r_it2==r_begin&& !(*r_it2==*n_begin) )
{
for(BidIt n_it3=n_begin;n_it3!=n_end;++n_it3)
{
if(*r_it2==*n_it3)
{
marked=r_it2;
*r_it2=*(--n_it3);
BidIt n_it4=n_end;
--n_it4;
for(BidIt r_it3=tmp_r_end; (r_it3!=r_begin || r_it3==r_begin) &&r_it3!=marked; --r_it3,--n_it4)
{
*r_it3=*n_it4;
}
return true;
}
}
}
else if(r_it2==r_begin&&*r_it2==*n_begin)
{
return false;//no more previous combination;
}
}
else //if(*r_it2!=*n_it2 )
{
++r_it2;
marked=r_it2;
for(BidIt n_it5=n_begin;n_it5!=n_end;++n_it5)
{
if(*r_it2==*n_it5)
{
*r_it2=*(--n_it5);
BidIt n_it6=n_end;
--n_it6;
for(BidIt r_it4=tmp_r_end; (r_it4!=r_begin || r_it4==r_begin) &&r_it4!=marked; --r_it4,--n_it6)
{
*r_it4=*n_it6;
}
return true;
}
}
}
}
return false;//Will never reach here, unless error
}
| bool oversim::prev_combination | ( | BidIt | n_begin, | |
| BidIt | n_end, | |||
| BidIt | r_begin, | |||
| BidIt | r_end, | |||
| Prediate | Equal | |||
| ) | [inline] |
Definition at line 239 of file combination.h.
{
bool boolsame=false;
BidIt marked;//for r
BidIt r_marked;
BidIt n_marked;
BidIt tmp_n_end=n_end;
--tmp_n_end;
BidIt r_it1=r_end;
--r_it1;
for(BidIt n_it1=tmp_n_end; n_it1!=n_begin || n_it1==n_begin ; --n_it1)
{
if( Equal(*r_it1, *n_it1) )
{
r_marked=r_it1;
n_marked=n_it1;
break;
}
}
BidIt n_it2=n_marked;
BidIt tmp_r_end=r_end;
--tmp_r_end;
for(BidIt r_it2=r_marked; r_it2!=r_begin || r_it2==r_begin; --r_it2,--n_it2)
{
if( Equal(*r_it2, *n_it2) )
{
if(r_it2==r_begin&& !Equal(*r_it2, *n_begin) )
{
for(BidIt n_it3=n_begin;n_it3!=n_end;++n_it3)
{
if(Equal(*r_it2, *n_it3))
{
marked=r_it2;
*r_it2=*(--n_it3);
BidIt n_it4=n_end;
--n_it4;
for(BidIt r_it3=tmp_r_end; (r_it3!=r_begin || r_it3==r_begin) &&r_it3!=marked; --r_it3,--n_it4)
{
*r_it3=*n_it4;
}
return true;
}
}
}
else if(r_it2==r_begin&&Equal(*r_it2, *n_begin))
{
return false;//no more previous combination;
}
}
else //if(*r_it2!=*n_it2 )
{
++r_it2;
marked=r_it2;
for(BidIt n_it5=n_begin;n_it5!=n_end;++n_it5)
{
if(Equal(*r_it2, *n_it5))
{
*r_it2=*(--n_it5);
BidIt n_it6=n_end;
--n_it6;
for(BidIt r_it4=tmp_r_end; (r_it4!=r_begin || r_it4==r_begin) &&r_it4!=marked; --r_it4,--n_it6)
{
*r_it4=*n_it6;
}
return true;
}
}
}
}
return false;//Will never reach here, unless error
}
| void oversim::recursive_combination | ( | RanIt | nbegin, | |
| RanIt | nend, | |||
| int | n_column, | |||
| RanIt | rbegin, | |||
| RanIt | rend, | |||
| int | r_column, | |||
| int | loop, | |||
| Func | func | |||
| ) |
Definition at line 331 of file combination.h.
{
int r_size=rend-rbegin;
int localloop=loop;
int local_n_column=n_column;
//A different combination is out
if(r_column>(r_size-1))
{
func(rbegin,rend);
return;
}
for(int i=0;i<=loop;++i)
{
RanIt it1=rbegin;
for(int cnt=0;cnt<r_column;++cnt)
{
++it1;
}
RanIt it2=nbegin;
for(int cnt2=0;cnt2<n_column+i;++cnt2)
{
++it2;
}
*it1=*it2;
++local_n_column;
recursive_combination(nbegin,nend,local_n_column,
rbegin,rend,r_column+1,localloop,func);
--localloop;
}
}
| const char* oversim::clusterarrows[] |
{ "m=m,50,50,50,50;ls=yellow,2",
"m=m,50,50,50,50;ls=magenta,3",
"m=m,50,50,50,50;ls=red,4",
"m=m,50,50,50,50;ls=orange,5",
"m=m,50,50,50,50;ls=green,6",
"m=m,50,50,50,50;ls=aquamarine,7",
"m=m,50,50,50,50;ls=cyan,8",
"m=m,50,50,50,50;ls=blue,9",
"m=m,50,50,50,50;ls=navy,10",
"m=m,50,50,50,50;ls=yellow,11"
}
Definition at line 51 of file Nice.cc.
Referenced by oversim::Nice::updateVisualization().
| const char* oversim::clustercolors[] |
{ "yellow",
"magenta",
"red",
"orange",
"green",
"aquamarine",
"cyan",
"blue",
"navy",
"yellow"
}
Define colors for layers in visualization.
Definition at line 39 of file Nice.cc.
Referenced by oversim::Nice::changeState(), oversim::Nice::ClusterMerge(), oversim::Nice::Remove(), and oversim::Nice::updateVisualization().
1.7.1