counters for subscription events

This commit is contained in:
Michael Davidsaver
2015-12-08 14:02:33 -05:00
parent 600085d23b
commit 5cd8f0d668
3 changed files with 50 additions and 5 deletions
+30 -2
View File
@@ -312,13 +312,13 @@ void statusServer(int lvl)
<<"' used by "<<nsrv<<" Server channel(s) with "
<<nmon<<" unique subscription(s)\n";
std::cout<<" "<<nmon<<" "<<mons.size()<<"\n";
if(lvl<=1)
continue;
FOREACH(it2, end2, mons) {
MonitorCacheEntry& ME = *it2->second;
MonitorCacheEntry::interested_t::vector_type usrs;
size_t nsrvmon;
bool hastype, hasdata, isdone;
{
@@ -328,13 +328,41 @@ void statusServer(int lvl)
hastype = !!ME.typedesc;
hasdata = !!ME.lastval;
isdone = ME.done;
if(lvl>2)
usrs = ME.interested.lock_vector();
}
// TODO: how to describe pvRequest in a compact way...
std::cout<<" Client Monitor used by "<<nsrvmon<<" Server monitors, "
<<"Has "<<(hastype?"":"not ")
<<"opened, Has "<<(hasdata?"":"not ")
<<"recv'd some data, Has "<<(isdone?"":"not ")<<"finalized\n";
<<"recv'd some data, Has "<<(isdone?"":"not ")<<"finalized\n"
" "<< epicsAtomicGetSizeT(&ME.nwakeups)<<" wakeups "
<<epicsAtomicGetSizeT(&ME.nevents)<<" events\n";
if(lvl<=2)
continue;
FOREACH(it3, end3, usrs) {
MonitorUser& MU = **it3;
size_t nempty, nfilled, nused, total;
{
Guard G(scp->cache.cacheLock);
nempty = MU.empty.size();
nfilled = MU.filled.size();
nused = MU.inuse.size();
}
total = nempty + nfilled + nused;
std::cout<<" Server monitor buffer "<<nfilled<<"/"<<total
<<" out "<<nused<<"/"<<total
<<" "<<epicsAtomicGetSizeT(&MU.nwakeups)<<" wakeups "
<<epicsAtomicGetSizeT(&MU.nevents)<<" events "
<<epicsAtomicGetSizeT(&MU.ndropped)<<" drops\n";
}
}
}
}