openModeller  Version 1.5.0
om_cmd_utils.cpp
Go to the documentation of this file.
1 
27 #include <om_cmd_utils.hh>
28 #include <time.h>
29 
30 using std::ios_base;
31 
32 // get Log Level
33 Log::Level getLogLevel( std::string level ) {
34 
35  if ( level == "debug" ) {
36 
37  return Log::Debug;
38  }
39  else if ( level == "info" ) {
40 
41  return Log::Info;
42  }
43  else if ( level == "warn" ) {
44 
45  return Log::Warn;
46  }
47  else if ( level == "error" ) {
48 
49  return Log::Error;
50  }
51  else {
52 
53  printf( "Unrecognized log level (%s). Using default value.\n", level.c_str() );
54  return Log::Default;
55  }
56 }
57 
58 // Display progress on screen
59 void progressDisplayCallback( float progress, void *extraParam )
60 {
61  char buffer[9];
62 
63  sprintf( buffer, "%07.4f", 100 * progress );
64 
65  std::cout << "Progress: " << buffer << "% \r" << flush;
66 }
67 
68 // Progress callback
69 void progressFileCallback( float progress, void *progressData )
70 {
71  if ( ! progressData ) {
72 
73  return;
74  }
75 
76  progress_data * prog_data = (progress_data *)progressData;
77 
78  time_t current_time;
79  time( &current_time );
80 
81  int my_progress = static_cast<int>(100*progress);
82 
83  if ( my_progress < 0 ) {
84 
85  my_progress /= 100;
86  }
87 
88  if ( my_progress == -1 || my_progress == -2 ||
89  my_progress == 0 || my_progress == 100 ||
90  ( progress != prog_data->progress &&
91  difftime( current_time, prog_data->timestamp ) > MIN_PROGRESS_INTERVAL ) ) {
92 
93  FILE *p_file = NULL;
94  p_file = fopen( prog_data->file_name.c_str(), "w" );
95 
96  if ( p_file == NULL ) {
97 
98  // Could not open file
99  // todo: send message to cerr but avoid doing this every time the callback is called
100  //cerr << "Could not open progress file" << endl;
101  }
102  else {
103 
104  char buffer[4];
105  sprintf( buffer, "%d", my_progress );
106  fputs( buffer, p_file );
107  fclose( p_file );
108  prog_data->progress = progress;
109  prog_data->timestamp = current_time;
110  }
111  }
112 }
std::string file_name
Definition: om_cmd_utils.hh:42
Log::Level getLogLevel(std::string level)
Level
Definition: Log.hh:54
Definition: Log.hh:57
void progressDisplayCallback(float progress, void *extraParam)
Definition: Log.hh:58
#define MIN_PROGRESS_INTERVAL
Definition: om_cmd_utils.hh:38
time_t timestamp
Definition: om_cmd_utils.hh:43
void progressFileCallback(float progress, void *progressData)