monmaptool: use generic MonMap::print methods

This commit is contained in:
Sage Weil 2009-10-10 21:34:40 -07:00
parent 97b76ff0a0
commit 0d9bd68f65
3 changed files with 26 additions and 10 deletions

View File

@ -26,3 +26,21 @@ int MonMap::read(const char *fn)
decode(bl);
return 0;
}
void MonMap::print_summary(ostream& out)
{
out << "e" << epoch << ": "
<< mon_inst.size() << " mons at";
for (unsigned i = 0; i<mon_inst.size(); i++)
out << " " << mon_inst[i].addr;
}
void MonMap::print(ostream& out)
{
out << "epoch " << epoch << "\n";
out << "fsid " << fsid << "\n";
out << "last_changed " << last_changed << "\n";
for (unsigned i=0; i<mon_inst.size(); i++) {
out << "\t" << mon_inst[i] << "\n";
}
}

View File

@ -116,6 +116,8 @@ class MonMap {
int write(const char *fn);
int read(const char *fn);
void print(ostream& out);
void print_summary(ostream& out);
};
inline void encode(MonMap &m, bufferlist &bl) {
@ -125,4 +127,9 @@ inline void decode(MonMap &m, bufferlist::iterator &p) {
m.decode(p);
}
inline ostream& operator<<(ostream& out, MonMap& m) {
m.print_summary(out);
return out;
}
#endif

View File

@ -32,15 +32,6 @@ void usage()
exit(1);
}
void printmap(const char *me, MonMap *m)
{
cout << me << ": monmap: epoch " << m->epoch << std::endl
<< me << ": monmap: fsid " << m->fsid << std::endl;
for (unsigned i=0; i<m->mon_inst.size(); i++)
cout << me << ": monmap: " //<< "mon" << i << " "
<< m->mon_inst[i] << std::endl;
}
int main(int argc, const char **argv)
{
vector<const char*> args;
@ -131,7 +122,7 @@ int main(int argc, const char **argv)
monmap.epoch++;
if (print)
printmap(me, &monmap);
monmap.print(cout);
if (modified) {
// write it out