void EnetClient::HandleRecvedMsg(const msg_ptr_t& msg) { if (msg->size() != test_msg_size_) { std::cout << "recv wrong msg size: " << msg->size() << std::endl << *msg << std::endl; loop_running_ = false; return; } // good test msg. // // log // uint64_t send_time = get_time_from_msg(*msg); uint64_t cur_time = iclock64(); static uint64_t static_last_refresh_time = 0; static size_t static_recved_bytes = 0; static_recved_bytes += msg->size(); { static size_t static_good_recv_count = 0; static_good_recv_count++; uint64_t interval = cur_time - send_time; recv_package_interval_.push_back(interval); recv_package_interval10_.push_back(interval); std::cout << interval << "\t"; if (static_good_recv_count % 10 == 0) { int average10 = 0; for (int x : recv_package_interval10_) average10 += x; average10 = (average10 / 10); int average_total = 0; for (int x: recv_package_interval_) average_total += x; average_total = average_total / recv_package_interval_.size(); std::cout << "max: " << *std::max_element( recv_package_interval10_.begin(), recv_package_interval10_.end() ) << " average 10: " << average10 << " average total: " << average_total; if (cur_time - static_last_refresh_time > 10 * 1000) { std::cout << " " << static_cast<double>(static_recved_bytes * 10 / (cur_time - static_last_refresh_time)) / 10 << "KB/s(in)"; static_last_refresh_time = cur_time; static_recved_bytes = 0; } std::cout << std::endl; std::cout << get_cur_time_str() << " "; recv_package_interval10_.clear(); } std::cout.flush(); } }
//============================================================================== void log_add(int log_type, const char *message) { #ifndef DEMS_DEVICE pthread_mutex_lock(&mutex_log); #endif #ifndef DEBUG_MODE if(log_type == LOG_DEBUG) goto exit; #endif #ifndef USE_EXTRA_LOGS if(log_type == LOG_EXTRA) goto exit; #endif #ifndef USE_WAIT_LOGS if(log_type == LOG_WAIT) goto exit; #endif const char *log_type_str = log_type_to_string(log_type); if( (log_type == LOG_INFO) || (log_type == LOG_CMD) || (log_type == LOG_NO_IDENT) #ifndef SILENT_MODE || (log_type >= LOG_ERROR_CRITICAL) #endif ) printf("%s%s\n", log_type_str, message); char full_file_name[256]; char file_name[64]; log_gen_name(LOG_NAME_DATE_S, log_prefix, file_name); sprintf(full_file_name, "%s/%s", log_path, file_name); make_dir(log_path); if(log_enable) { FILE *log = fopen(full_file_name, "a"); if(log != NULL) { char time_str[16]; get_cur_time_str(time_str, LOG_LONG_FORMAT); fprintf(log, "%s %s%s\n", time_str, log_type_str, message); fclose(log); } else printf("[WARNING] Can not open log file, %s\n", full_file_name); } exit: #ifndef DEMS_DEVICE pthread_mutex_unlock(&mutex_log); #endif return; }
//============================================================================== void log_gen_name(log_time_tag_t time_tag, const char *name, char *result) { switch(time_tag) { case LOG_NAME_DATE: { char date_str[16]; get_cur_date_str(date_str, LOG_LONG_FORMAT); sprintf(result, "%s_%s", date_str, name); break; } case LOG_NAME_DATE_S: { char date_str[16]; get_cur_date_str(date_str, LOG_SHORT_FORMAT); sprintf(result, "%s_%s", date_str, name); break; } case LOG_NAME_TIME: { char time_str[16]; get_cur_time_str(time_str, LOG_LONG_FORMAT); sprintf(result, "%s_%s", time_str, name); break; } case LOG_NAME_TIME_S: { char time_str[16]; get_cur_time_str(time_str, LOG_SHORT_FORMAT); sprintf(result, "%s_%s", time_str, name); break; } case LOG_NAME_DATE_TIME: { char date_str[16]; get_cur_date_str(date_str, LOG_LONG_FORMAT); char time_str[16]; get_cur_time_str(time_str, LOG_LONG_FORMAT); sprintf(result, "%s_%s_%s", date_str, time_str, name); break; } case LOG_NAME_DATE_TIME_S: { char date_str[16]; get_cur_date_str(date_str, LOG_SHORT_FORMAT); char time_str[16]; get_cur_time_str(time_str, LOG_SHORT_FORMAT); sprintf(result, "%s_%s_%s", date_str, time_str, name); break; } case LOG_NAME_ONLY: default: { sprintf(result, "%s", name); break; } } }