Changeset 1155 for trunk/packages
- Timestamp:
- Sep 15, 2008, 1:58:33 PM (16 years ago)
- File:
-
- 1 edited
Legend:
- Unmodified
- Added
- Removed
-
trunk/packages/vizservers/pymolproxy/pymolproxy.c
r1152 r1155 47 47 48 48 #define IO_TIMEOUT (30000) 49 #define STATSFILE "/var/tmp/pymolproxy.csv" 49 50 50 51 typedef struct { … … 107 108 struct timeval tv; 108 109 double start, finish; 110 int result; 109 111 110 112 gettimeofday(&tv, NULL); 111 113 start = ((double)tv.tv_sec) + ((double)tv.tv_usec * 1.0e-6); 112 Tcl_Eval(interp, Tcl_DStringValue(dsPtr));114 result = Tcl_Eval(interp, Tcl_DStringValue(dsPtr)); 113 115 trace("Executed (%s)", Tcl_DStringValue(dsPtr)); 114 116 Tcl_DStringSetLength(dsPtr, 0); … … 118 120 statsPtr->cmdTime += finish - start; 119 121 statsPtr->nCommands++; 120 } 122 return result; 123 } 124 125 #ifdef KEEPSTATS 121 126 122 127 static int … … 125 130 struct timeval tv; 126 131 double start, finish; 127 int lockf;128 FILE *f;129 char *lockFileName, *statsFileName;132 int f; 133 size_t length; 134 char buf[4000]; 130 135 131 136 /* Get ending time. */ … … 134 139 tv = statsPtr->start; 135 140 start = ((double)tv.tv_sec) + ((double)tv.tv_usec * 1.0e-6); 136 for(;;) { 137 lockf = open(lockFileName, O_EXCL | O_CREAT | O_TRUNC | O_WRONLY, 0600); 138 if (lockf >= 0) { 139 break; 140 } 141 if (errno != EEXIST) { 142 fprintf(stderr, "can't open lock file \"%s\"\n: %s\n", 143 lockFileName, strerror(errno)); 144 return 0; 145 } 146 /* Need to turn off alarms first. */ 147 alarm(0); 148 sleep(1); 149 } 150 f = fopen(statsFileName, "a+"); 151 if (f == NULL) { 152 fprintf(f, "\"pymolproxy\",%d,%d,%d,%d,%d,%d,%g,%g", 153 getpid(), 154 code, 155 statsPtr->date, 156 statsPtr->nFrames, 157 statsPtr->nBytes, 158 statsPtr->nCommands, 159 statsPtr->cmdTime, 160 finish - start); 161 fclose(f); 162 } 163 close(lockf); 164 unlink(lockFileName); 141 sprintf(buf, "\"pymolproxy\",%d,%d,%d,%d,%d,%d,%g,%g", 142 getpid(), 143 code, 144 statsPtr->date, 145 statsPtr->nFrames, 146 statsPtr->nBytes, 147 statsPtr->nCommands, 148 statsPtr->cmdTime, 149 finish - start); 150 f = open(STATSFILE, O_APPEND | O_CREAT | O_WRONLY, 0600); 151 if (f < 0) { 152 return 0; 153 } 154 length = strlen(buf); 155 if (write(f, buf, length) != length) { 156 return 0; 157 } 158 close(f); 165 159 return 1; 166 160 } 161 #endif 167 162 168 163 INLINE static void … … 1361 1356 1362 1357 if (ch == '\n' && Tcl_CommandComplete(Tcl_DStringValue(&cmdbuffer))) { 1363 ExecuteCommand(interp, &cmdbuffer, &stats); 1358 int result; 1359 1360 result = ExecuteCommand(interp, &cmdbuffer, &stats); 1364 1361 if (timeout == 0) status = 0; // send update 1365 1362 } … … 1423 1420 1424 1421 status = waitpid(pid, &result, WNOHANG); 1422 #ifdef KEEPSTATS 1425 1423 WriteStats(&stats, status); 1424 #endif 1426 1425 if (status == -1) { 1427 1426 trace("pymolproxy: error waiting on pymol server to exit (%d)\n", errno);
Note: See TracChangeset
for help on using the changeset viewer.