PhasespaceCore::~PhasespaceCore() { ros::Time elapsed_time = ros::Time::now(); std::cout << "\n\n"; // closes log files if (!log_multi_files_) { std::string complete_path; std::ifstream last_file; complete_path = log_file_base_path_ + date_time_ + log_file_name_ + ".dat"; if (log_file_.is_open()) { num_log_files_++; std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file generated: " << complete_path << '\n'; log_file_.close(); } // checks for emptiness (in case removes the file) last_file.open(complete_path); if (last_file.peek() == std::ifstream::traits_type::eof() && std::remove(complete_path.c_str()) == 0) { std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file was empty, thus has been removed: " << complete_path << '\n'; } complete_path = log_file_base_path_ + date_time_ + log_file_name_old_ + ".dat"; if (log_file_old_.is_open()) { num_log_files_++; std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file generated: " << complete_path << '\n'; log_file_old_.close(); } // checks for emptiness last_file.open(complete_path); if (last_file.peek() == std::ifstream::traits_type::eof() && std::remove(complete_path.c_str()) == 0) { std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Log file was empty, thus has been removed: " << complete_path << '\n'; } } // prints statistics (can't use rosconsole macros due to ros::shutdown() callback) std::cout << "[ INFO] [" << elapsed_time << "]: [PhaseSpace] Final statistics..." << '\n'; int marker_id = 0; for (auto const& occurrences : *markers_count_) { if (occurrences > 0) { int perc = 100*occurrences/num_data_retrieved_; std::cout << " + Marker[" << marker_id << "]: " << occurrences << " occurrences (" << perc << " %)" << '\n'; } marker_id++; } std::cout << " + Total elapsed time: " << elapsed_time - start_time_ << '\n'; std::cout << " + Total data acquired: " << num_data_retrieved_ << '\n'; std::cout << " + Total data rate: " << (double)num_data_retrieved_ / (elapsed_time-start_time_).toSec() << '\n'; std::cout << " + Total log files created: " << num_log_files_ << std::endl; // performs system cleanup and client connection termination owlDone(); delete private_node_handle_; delete markers_; delete markers_count_; }
void phasespace_close() { PhaseSpaceData *d = data(); owlDone(); (*d->destroy)(); d->status = PHASESPACE_CLEAN; }
vrpn_Tracker_PhaseSpace::~vrpn_Tracker_PhaseSpace() { #ifdef DEBUG printf("%s\n", __PRETTY_FUNCTION__); #endif if(owlRunning) owlDone(); }