00001 
00002 
00003 
00004 
00005 
00006 
00007 
00008 
00009 
00010 
00011 
00012 
00013 
00014 
00015 
00016 
00017 
00018 
00019 
00020 #include <cstdlib>
00021 #include <pthread.h> 
00022 
00023 #include "Utils.hpp"
00024 #include "GeneratorTrace.hpp"
00025 #include "C_LogStatControl.hpp"
00026 
00027 
00028 C_LogStatControl::C_LogStatControl():C_TaskControl(){
00029   m_sem = NULL ;
00030   m_stat = NULL ;
00031 }
00032 
00033 C_LogStatControl::~C_LogStatControl(){
00034   DELETE_VAR (m_sem) ;
00035   m_stat = NULL ;
00036 }
00037 
00038 void  C_LogStatControl::init(unsigned long P_period, string_t& P_fileName) {
00039   GEN_DEBUG(0, "C_LogStatControl::init() start");
00040   m_stat = C_GeneratorStats::instance() ;
00041   m_stat -> setFileName ((char*)P_fileName.c_str());
00042 
00043   NEW_VAR(m_sem, C_SemaphoreTimed(P_period));
00044   m_sem -> P();
00045   C_TaskControl::init() ;
00046   GEN_DEBUG(0, "C_LogStatControl::init() end");
00047 }
00048 
00049 
00050 T_GeneratorError C_LogStatControl::InitProcedure() {
00051   GEN_DEBUG(0, "C_LogStatControl::doInit() start");
00052   m_stat->init();
00053   m_stat->makeFirstLog();
00054   GEN_DEBUG(0, "C_LogStatControl::doInit() end");
00055   return (E_GEN_NO_ERROR);
00056 }
00057 
00058 T_GeneratorError C_LogStatControl::TaskProcedure() {
00059   GEN_DEBUG(0, "C_LogStatControl::doTask() start");
00060   m_stat->makeLog ();
00061   m_stat->executeStatAction(C_GeneratorStats::E_RESET_PL_COUNTERS);
00062   sched_yield () ;
00063   m_sem -> P() ;
00064   GEN_DEBUG(0, "C_LogStatControl::doTask() end");
00065   return (E_GEN_NO_ERROR);
00066 }
00067 
00068 T_GeneratorError C_LogStatControl::EndProcedure() {
00069   m_stat->makeLog ();
00070   return (E_GEN_NO_ERROR);
00071 }
00072 
00073 T_GeneratorError C_LogStatControl::StoppingProcedure() {
00074   M_state = C_TaskControl::E_STATE_STOPPED ;
00075   m_sem->V();
00076 
00077   return (E_GEN_NO_ERROR);
00078 }
00079 
00080 T_GeneratorError C_LogStatControl::ForcedStoppingProcedure() {
00081   return (E_GEN_NO_ERROR);
00082 }
00083 
00084 void C_LogStatControl::reset_cumul_counters() {
00085   m_stat->reset_cumul_counters();
00086 }
00087 
00088 
00089 void C_LogStatControl::activate_percent_traffic() {
00090   m_stat->activate_percent_traffic();
00091 }
00092 
00093 
00094 
00095 
00096 
00097