/* Web Polygraph http://www.web-polygraph.org/ * (C) 2003-2006 The Measurement Factory * Licensed under the Apache License, Version 2.0 */ #include "base/polygraph.h" #include "runtime/LogComment.h" #include "runtime/polyBcastChannels.h" #include "runtime/PubWorld.h" #include "client/PrivWorld.h" #include "client/Client.h" #include "client/WssFreezer.h" int WssFreezer::TheStartCount = 0; void WssFreezer::start() { Assert(!TheStartCount); // multiple wss freezers are not supported TheStartCount++; startFill(); } void WssFreezer::startFill() { printGoal(Comment(5) << "fyi: working set size goal: "); Comment << endc; if (PrivWorld::Frozen() && PubWorld::Frozen()) { Comment(5) << "warning: working set is already frozen" << endc; Client::ReportWss(5); } else { Broadcast(TheInfoChannel, BcastRcver::ieWssFill); } } void WssFreezer::startFreeze() { Comment(5) << "fyi: started freezing working set size" << endc; PubWorld::FreezeWss(); Broadcast(TheInfoChannel, BcastRcver::ieWssFreeze); // todo: wait and report this condition if it does not happen immediatelly if (PrivWorld::Frozen() && PubWorld::Frozen()) Comment(5) << "fyi: working set size is now frozen" << endc; }