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