Homepage Demos Overview Downloads Tutorials Reference
Credits
Main Page | Namespace List | Class Hierarchy | Alphabetical List | Compound List | File List | Namespace Members | Compound Members | File Members | Related Pages | Search

FreeMemReportControl.cc

Go to the documentation of this file.
00001 #include "FreeMemReportControl.h"
00002 #include <AnalyzerAPI.h>
00003 #include <AnalyzerError.h>
00004 
00005 void FreeMemReportControl::processEvent(const EventBase& e) {
00006   ASSERTRET(e.getGeneratorID()==EventBase::timerEGID,"Unexpected event");
00007   if(e.getSourceID()==0) {
00008     report();
00009   } else if(e.getSourceID()==1) {
00010     size_t freemem=freeMem();
00011     if(freemem<low_mem) {
00012       if(!isWarning) {
00013         isWarning=true;
00014         serr->printf("WARNING: Low memory: %d\n",freemem);
00015       }
00016     } else {
00017       if(isWarning) {
00018         isWarning=false;
00019         report();
00020       }
00021     }
00022   } else
00023     ASSERT(false,"Unexpected timer event");
00024 }
00025   
00026 //! reports size of free memory - if this is below low_mem, also generates a warning
00027 void FreeMemReportControl::report() {
00028   size_t freemem=freeMem();
00029   sout->printf("%d bytes free\n",freemem);
00030   if(freemem<low_mem)
00031     if(isWarning)
00032       serr->printf("WARNING: Low memory: %d\n",freemem);
00033   resetTimerFreq();
00034 }
00035 
00036 //! returns the size of the free memory
00037 size_t FreeMemReportControl::freeMem() {
00038   size_t freemem;
00039   if (AnalyzerGetSizeOfFreeMemory(&freemem)!=azrSUCCESS)
00040     sout->printf("Aperios error: getsizeoffreememory failed\n");
00041   return freemem;
00042 }
00043 
00044 void FreeMemReportControl::resetTimerFreq() {
00045   if(report_freq==-1U)
00046     erouter->removeTimer(this,0);
00047   else
00048     erouter->addTimer(this,0,report_freq*1000,true);
00049   erouter->addTimer(this,1,monitor_freq,true);
00050 }
00051 
00052 /*! @file
00053  * @brief Implements FreeMemReportControl, which gives reports on free memory size at various (configurable) rates
00054  * @author ejt (object), alokl (core function)
00055  *
00056  * $Author: ejt $
00057  * $Name: tekkotsu-1_4_1 $
00058  * $Revision: 1.2 $
00059  * $State: Exp $
00060  * $Date: 2003/06/12 23:41:36 $
00061  */
00062 

Tekkotsu v1.4
Generated Sat Jul 19 00:06:30 2003 by Doxygen 1.3.2