| 1143 | } |
| 1144 | |
| 1145 | void CStat::dumpData () |
| 1146 | { |
| 1147 | long localElapsedTime, globalElapsedTime ; |
| 1148 | struct timeval currentTime; |
| 1149 | float averageCallRate; |
| 1150 | float realInstantCallRate; |
| 1151 | unsigned long numberOfCall; |
| 1152 | |
| 1153 | // computing the real call rate |
| 1154 | GET_TIME (¤tTime); |
| 1155 | globalElapsedTime = computeDiffTimeInMs (¤tTime, &M_startTime); |
| 1156 | localElapsedTime = computeDiffTimeInMs (¤tTime, &M_plStartTime); |
| 1157 | |
| 1158 | // the call rate is for all the call : incoming and outgoing |
| 1159 | numberOfCall = (M_counters[CPT_C_IncomingCallCreated] + |
| 1160 | M_counters[CPT_C_OutgoingCallCreated]); |
| 1161 | averageCallRate = (globalElapsedTime > 0 ? |
| 1162 | 1000*(float)numberOfCall/(float)globalElapsedTime : |
| 1163 | 0.0); |
| 1164 | numberOfCall = (M_counters[CPT_PL_IncomingCallCreated] + |
| 1165 | M_counters[CPT_PL_OutgoingCallCreated]); |
| 1166 | realInstantCallRate = (localElapsedTime > 0 ? |
| 1167 | 1000*(float)numberOfCall / (float)localElapsedTime : |
| 1168 | 0.0); |
| 1169 | |
| 1170 | if(M_outputStream == nullptr) { |
| 1171 | // if the file is still not opened, we opened it now |
| 1172 | M_outputStream = new std::ofstream(M_fileName); |
| 1173 | M_headerAlreadyDisplayed = false; |
| 1174 | |
| 1175 | #ifndef __osf__ |
| 1176 | if(!M_outputStream->is_open()) { |
| 1177 | std::cerr << "Unable to open stat file '" << M_fileName << "' !" << std::endl; |
| 1178 | exit(EXIT_FATAL_ERROR); |
| 1179 | } |
| 1180 | #endif |
| 1181 | |
| 1182 | } |
| 1183 | |
| 1184 | if(M_headerAlreadyDisplayed == false) { |
| 1185 | // header - it's dump in file only one time at the beginning of the file |
| 1186 | (*M_outputStream) << "StartTime" << stat_delimiter |
| 1187 | << "LastResetTime" << stat_delimiter |
| 1188 | << "CurrentTime" << stat_delimiter |
| 1189 | << "ElapsedTime(P)" << stat_delimiter |
| 1190 | << "ElapsedTime(C)" << stat_delimiter |
| 1191 | << "TargetRate" << stat_delimiter |
| 1192 | << "CallRate(P)" << stat_delimiter |
| 1193 | << "CallRate(C)" << stat_delimiter |
| 1194 | << "IncomingCall(P)" << stat_delimiter |
| 1195 | << "IncomingCall(C)" << stat_delimiter |
| 1196 | << "OutgoingCall(P)" << stat_delimiter |
| 1197 | << "OutgoingCall(C)" << stat_delimiter |
| 1198 | << "TotalCallCreated" << stat_delimiter |
| 1199 | << "CurrentCall" << stat_delimiter |
| 1200 | << "SuccessfulCall(P)" << stat_delimiter |
| 1201 | << "SuccessfulCall(C)" << stat_delimiter |
| 1202 | << "FailedCall(P)" << stat_delimiter |