void ultTestPing(char* conf) { unitSubheading("Test Ping"); int result = ultPing(); unitAssertZero("Test Ping Thread Spawn Result",result); utilSleep(3); ultPrintData(); }
bool animSleep(int ms) { if (sleepInterrupted) { return false; } scriptReleaseGIL(); int time = glutGet(GLUT_ELAPSED_TIME); int returnAt = time + ms; int wakeAt, wakeAfter; animSleepActive=true; while ((ms=returnAt-time)>0) { wakeAfter=animFrameDelay; if (wakeAfter > animResponseDelay) wakeAfter=animResponseDelay; if (wakeAfter > ms) wakeAfter=ms; wakeAt=time+wakeAfter; updateStatus(0, true, "script"); glutMainLoopEvent(); if (sleepInterrupted) break; time = glutGet(GLUT_ELAPSED_TIME); wakeAfter=wakeAt-time; if (wakeAfter>0) { utilSleep(wakeAfter); } time = glutGet(GLUT_ELAPSED_TIME); } glutMainLoopEvent(); animSleepActive=false; scriptAcquireGIL(); scriptEventsSchedulePending(); hidInvokeWaitingEvents(); return !sleepInterrupted; }
int cpsOpen(cpsHandle& h, char* path, uint mode, uint iPermission) { if (NULL == path) { LogError("path name is invalid"); return -1; } int rc = 0; int tryn = 0; #ifdef _WINDOWS inspire::CharConvertor con(path); int crMode = 0; // create mode int rwMode = 0; // read/write mode int shMode = 0; // shared mode int attri = 0; // direct/sync I/O // create/open mode switch (mode & MODE_CREATE) { case MODE_DEFAULT: crMode = OPEN_EXISTING; break; case MODE_CREATEONLY: crMode = CREATE_NEW; break; case MODE_REPLACE: crMode = CREATE_ALWAYS; break; case MODE_CREATE: crMode = OPEN_ALWAYS; break; } // read/write access switch (mode & ACCESS_READWRITE) { case ACCESS_WRITEONLY: if (mode & SHAREDREAD) { rwMode = GENERIC_READ | GENERIC_WRITE; } else { rwMode = GENERIC_WRITE; } break; case ACCESS_READONLY: if ((mode | SHAREDREAD) == EXCLUSIVE) { rwMode = GENERIC_READ | GENERIC_WRITE; } else { rwMode = GENERIC_READ; } break; case ACCESS_READWRITE: rwMode = GENERIC_READ | GENERIC_WRITE; break; } // shared mode switch (mode & SHAREDWRITE) { case EXCLUSIVE: shMode = 0; break; case SHAREDREAD: if (mode | ACCESS_WRITEONLY) { shMode = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; } else { shMode = FILE_SHARE_READ; } break; case SHAREDWRITE: shMode = FILE_SHARE_READ | FILE_SHARE_WRITE | FILE_SHARE_DELETE; break; } // I/O if (mode & DIRECTIO) { attri |= FILE_FLAG_NO_BUFFERING; } if (mode & WRITETHROUGH) { attri |= FILE_FLAG_WRITE_THROUGH; } while (true) { ++tryn; h.hHandle = ::CreateFile(con.toString(), rwMode, shMode, NULL, crMode, attri, NULL); if (INVALID_HANDLE_VALUE == h.hHandle) { int err = utilGetLastError(); if (ERROR_SHARING_VIOLATION == err && tryn < MAX_OPEN_RETRY) { utilSleep(100); continue; } switch (err) { case ERROR_SHARING_VIOLATION: rc = -1; LogError("Permission denied when open file: %s", path); break; default: rc = -1; LogError("I/O error when open file: %s", path); break; } } break; } #else int iMode = 0; int direct = 0; int perm = ((iPermission != 0) ? iPermission : DEFAULT_FILE_ACCESS); // create/open mode switch (mode & MODE_CREATE) { case MODE_DEFAULT: iMode = 0; break; case MODE_CREATEONLY: iMode = O_CREAT | O_EXCL; break; case MODE_REPLACE: iMode = O_CREAT | O_TRUNC; break; case MODE_CREATE: iMode = O_CREAT; break; default: break; } // read/write access switch (mode & ACCESS_READWRITE) { case ACCESS_WRITEONLY: if (mode | SHAREDREAD) { iMode |= O_RDWR; } else { iMode |= O_WRONLY; } break; case ACCESS_READONLY: if ((mode & SHAREDREAD) == EXCLUSIVE) { iMode |= O_RDWR; } else { iMode |= O_RDONLY; } break; case ACCESS_READWRITE: iMode |= O_RDWR; break; } // I/O if (mode & DIRECTIO) { direct = O_DIRECT; } if (mode & WRITETHROUGH) { iMode |= O_SYNC; } int err = 0; while (true) { ++tryn; do { h.hHandle = ::open(path, iMode | direct, perm); } while ((-1 == h.hHandle) && (EINTR == (err = utilGetLastError()))); if (-1 == h.hHandle) { if ((EINVAL == err) && (O_DIRECT == direct)) { direct = 0; continue; } else if ((ETXTBSY == err) && tryn < MAX_OPEN_RETRY) { utilSleep(100); continue; } rc = -1; switch (err) { case ENOENT: LogError("Try to open a file not exist, file: %s", path); break; case EEXIST: LogError("Try to create a file that existed, file: %s", path); break; case EACCES: LogError("Permission denied when open file: %s", path); break; default: LogError("I/O error occurs when open file: %s", path); break; } } break; } #endif return rc; }