- Timestamp:
- Dec 1, 2014, 4:09:11 AM (10 years ago)
- Location:
- nanovis/branches/1.1
- Files:
-
- 4 edited
Legend:
- Unmodified
- Added
- Removed
-
nanovis/branches/1.1
- Property svn:mergeinfo changed
/nanovis/trunk (added) merged: 4794
- Property svn:mergeinfo changed
-
nanovis/branches/1.1/Command.cpp
r4612 r4802 769 769 } 770 770 #ifdef KEEPSTATS 771 int f;772 773 771 /* Use the initial client key value pairs as the parts for a generating 774 772 * a unique file name. */ 775 f = NanoVis::getStatsFile(objv[1]);773 int f = NanoVis::getStatsFile(objv[1]); 776 774 if (f < 0) { 777 775 Tcl_AppendResult(interp, "can't open stats file: ", … … 787 785 Tcl_ListObjAppendElement(interp, listObjPtr, objPtr); 788 786 /* server */ 789 objPtr = Tcl_NewStringObj(" server", 6);787 objPtr = Tcl_NewStringObj("renderer", 8); 790 788 Tcl_ListObjAppendElement(interp, listObjPtr, objPtr); 791 789 objPtr = Tcl_NewStringObj("nanovis", 7); … … 794 792 objPtr = Tcl_NewStringObj("pid", 3); 795 793 Tcl_ListObjAppendElement(interp, listObjPtr, objPtr); 796 Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_New IntObj(getpid()));794 Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewLongObj((long)NanoVis::stats.pid)); 797 795 /* machine */ 798 objPtr = Tcl_NewStringObj(" machine", 7);796 objPtr = Tcl_NewStringObj("host", 4); 799 797 Tcl_ListObjAppendElement(interp, listObjPtr, objPtr); 800 798 gethostname(buf, BUFSIZ-1); … … 809 807 /* date */ 810 808 Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj("date", 4)); 811 strcpy(buf, ctime(&NanoVis::sta rtTime.tv_sec));809 strcpy(buf, ctime(&NanoVis::stats.start.tv_sec)); 812 810 buf[strlen(buf) - 1] = '\0'; 813 811 Tcl_ListObjAppendElement(interp, listObjPtr, Tcl_NewStringObj(buf, -1)); 814 812 /* date_secs */ 815 813 Tcl_ListObjAppendElement(interp, listObjPtr, 816 Tcl_NewStringObj("date_secs", 9));814 Tcl_NewStringObj("date_secs", 9)); 817 815 Tcl_ListObjAppendElement(interp, listObjPtr, 818 Tcl_NewLongObj(NanoVis::startTime.tv_sec));816 Tcl_NewLongObj(NanoVis::stats.start.tv_sec)); 819 817 /* Client arguments. */ 820 818 if (Tcl_ListObjGetElements(interp, objv[1], &numItems, &items) != TCL_OK) { -
nanovis/branches/1.1/nanovis.cpp
r4612 r4802 91 91 #define FALSE 0 92 92 93 typedef struct {94 pid_t pid;95 size_t nFrames; /**< # of frames sent to client. */96 size_t nBytes; /**< # of bytes for all frames. */97 size_t nCommands; /**< # of commands executed */98 double cmdTime; /**< Elasped time spend executing99 * commands. */100 struct timeval start; /**< Start of elapsed time. */101 } Stats;102 103 static Stats stats;104 105 93 // STATIC MEMBER DATA 106 94 … … 109 97 FILE *NanoVis::recfile = NULL; 110 98 99 NanoVis::Stats NanoVis::stats; 111 100 int NanoVis::statsFile = -1; 112 101 … … 114 103 bool NanoVis::debugFlag = false; 115 104 bool NanoVis::axisOn = true; 116 struct timeval NanoVis::startTime;117 105 118 106 int NanoVis::winWidth = NPIX; … … 253 241 { 254 242 Tcl_DString ds; 255 Tcl_Obj **objv;256 int objc;257 int i;258 243 char fileName[33]; 244 char pidstr[200]; 259 245 const char *path; 260 246 md5_state_t state; … … 266 252 return statsFile; 267 253 } 268 if (Tcl_ListObjGetElements(interp, objPtr, &objc, &objv) != TCL_OK) {269 return -1;270 }271 Tcl_ListObjAppendElement(interp, objPtr, Tcl_NewStringObj("pid", 3)); 272 Tcl_ListObjAppendElement(interp, objPtr, Tcl_NewIntObj(getpid()));254 /* By itself the client's key/value pairs aren't unique. Add in the 255 * process id of this render server. */ 256 sprintf(pidstr, "%ld", (long)stats.pid); 257 258 /* Create an md5 hash of the key/value pairs and use it as the file name. */ 273 259 string = Tcl_GetStringFromObj(objPtr, &length); 274 275 260 md5_init(&state); 276 md5_append(&state, (const md5_byte_t *)string, length); 261 md5_append(&state, (const md5_byte_t *)string, strlen(string)); 262 md5_append(&state, (const md5_byte_t *)pidstr, strlen(pidstr)); 277 263 md5_finish(&state, digest); 278 for (i = 0; i < 16; i++) {264 for (int i = 0; i < 16; i++) { 279 265 sprintf(fileName + i * 2, "%02x", digest[i]); 280 266 } … … 315 301 Tcl_DString ds; 316 302 int result; 317 int f;318 303 319 304 { … … 323 308 gettimeofday(&tv, NULL); 324 309 finish = CVT2SECS(tv); 325 tv = stats.start;310 tv = NanoVis::stats.start; 326 311 start = CVT2SECS(tv); 327 312 } … … 353 338 /* pid */ 354 339 Tcl_DStringAppendElement(&ds, "pid"); 355 sprintf(buf, "%d", getpid());340 sprintf(buf, "%d", NanoVis::stats.pid); 356 341 Tcl_DStringAppendElement(&ds, buf); 357 342 /* host */ … … 362 347 /* date */ 363 348 Tcl_DStringAppendElement(&ds, "date"); 364 strcpy(buf, ctime(& stats.start.tv_sec));349 strcpy(buf, ctime(&NanoVis::stats.start.tv_sec)); 365 350 buf[strlen(buf) - 1] = '\0'; 366 351 Tcl_DStringAppendElement(&ds, buf); 367 352 /* date_secs */ 368 353 Tcl_DStringAppendElement(&ds, "date_secs"); 369 sprintf(buf, "%ld", stats.start.tv_sec);354 sprintf(buf, "%ld", NanoVis::stats.start.tv_sec); 370 355 Tcl_DStringAppendElement(&ds, buf); 371 356 /* num_frames */ 372 357 Tcl_DStringAppendElement(&ds, "num_frames"); 373 sprintf(buf, "%lu", (unsigned long int) stats.nFrames);358 sprintf(buf, "%lu", (unsigned long int)NanoVis::stats.nFrames); 374 359 Tcl_DStringAppendElement(&ds, buf); 375 360 /* frame_bytes */ 376 361 Tcl_DStringAppendElement(&ds, "frame_bytes"); 377 sprintf(buf, "%lu", (unsigned long int) stats.nBytes);362 sprintf(buf, "%lu", (unsigned long int)NanoVis::stats.nBytes); 378 363 Tcl_DStringAppendElement(&ds, buf); 379 364 /* num_commands */ 380 365 Tcl_DStringAppendElement(&ds, "num_commands"); 381 sprintf(buf, "%lu", (unsigned long int) stats.nCommands);366 sprintf(buf, "%lu", (unsigned long int)NanoVis::stats.nCommands); 382 367 Tcl_DStringAppendElement(&ds, buf); 383 368 /* cmd_time */ 384 369 Tcl_DStringAppendElement(&ds, "cmd_time"); 385 sprintf(buf, "%g", stats.cmdTime);370 sprintf(buf, "%g", NanoVis::stats.cmdTime); 386 371 Tcl_DStringAppendElement(&ds, buf); 387 372 /* session_time */ … … 418 403 } 419 404 Tcl_DStringAppend(&ds, "\n", -1); 420 f = NanoVis::getStatsFile(NULL);405 int f = NanoVis::getStatsFile(NULL); 421 406 result = NanoVis::writeToStatsFile(f, Tcl_DStringValue(&ds), 422 407 Tcl_DStringLength(&ds)); … … 495 480 std::string cmd(str); 496 481 cmd.erase(cmd.find_last_not_of(" \n\r\t")+1); 497 TRACE("command %lu: '%s'", stats.nCommands+1, cmd.c_str());482 TRACE("command %lu: '%s'", NanoVis::stats.nCommands+1, cmd.c_str()); 498 483 #endif 499 484 … … 511 496 finish = CVT2SECS(tv); 512 497 513 stats.cmdTime += finish - start;514 stats.nCommands++;498 NanoVis::stats.cmdTime += finish - start; 499 NanoVis::stats.nCommands++; 515 500 TRACE("Leave status=%d", result); 516 501 return result; … … 1981 1966 1982 1967 openlog("nanovis", LOG_CONS | LOG_PERROR | LOG_PID, LOG_USER); 1983 gettimeofday(&NanoVis::startTime, NULL); 1984 stats.start = NanoVis::startTime; 1968 memset(&NanoVis::stats, 0, sizeof(NanoVis::Stats)); 1969 NanoVis::stats.pid = getpid(); 1970 gettimeofday(&NanoVis::stats.start, NULL); 1985 1971 1986 1972 /* Initialize GLUT here so it can parse and remove GLUT-specific -
nanovis/branches/1.1/nanovis.h
r4617 r4802 20 20 #include <md5.h> 21 21 #include <GL/glew.h> 22 #include <sys/types.h> // For pid_t 23 #include <sys/time.h> // For struct timeval 22 24 23 25 #include <math.h> … … 33 35 #include "config.h" 34 36 35 #define NANOVIS_VERSION "1.1. 1"37 #define NANOVIS_VERSION "1.1.2" 36 38 37 39 //defines for the image based flow visualization … … 80 82 }; 81 83 84 typedef struct { 85 pid_t pid; 86 size_t nFrames; /**< # of frames sent to client. */ 87 size_t nBytes; /**< # of bytes for all frames. */ 88 size_t nCommands; /**< # of commands executed */ 89 double cmdTime; /**< Elasped time spend executing 90 * commands. */ 91 struct timeval start; /**< Start of elapsed time. */ 92 } Stats; 93 82 94 typedef std::string TransferFunctionId; 83 95 typedef std::string VolumeId; … … 161 173 162 174 static FILE *stdin, *logfile, *recfile; 175 static Stats stats; 163 176 static int statsFile; 164 177 static unsigned int flags; 165 178 static bool debugFlag; 166 179 static bool axisOn; 167 static struct timeval startTime; ///< Start of elapsed time.168 180 169 181 static int winWidth; ///< Width of the render window
Note: See TracChangeset
for help on using the changeset viewer.