bool CWRequest::IsServerRunning(string sSessionID, int iTimeoutMS, string* pErrorMessage) { if(sSessionID == "") { if(pErrorMessage != NULL) *pErrorMessage = "Session ID is empty."; return false; } // read server pid string instance_filename = TempDir() + sSessionID + ".server"; int fd = -1; int file_size = 0; if(!FileOpenExistingAndLock(instance_filename, iTimeoutMS, &fd, &file_size, pErrorMessage)) return false; int server_pid = 0; if(!FileReadInt(fd, &server_pid, pErrorMessage)) { FileUnlockAndClose(fd, NULL); return false; } FileUnlockAndClose(fd, NULL); // check if server is running if(!IsProcessRunning(server_pid)) { if(pErrorMessage != NULL) *pErrorMessage = "Server is not running."; // if server is not running, delete server pid file and server queue FileDelete(instance_filename, NULL); string queue_filename = TempDir() + sSessionID + ".queue"; if(FileExists(queue_filename)) FileDelete(queue_filename, NULL); return false; } return true; }
/* *** SCRIPT SYMBOL: [File] File::ReadInt^0 *** */ static int File_ReadInt(sc_File *fil) { return FileReadInt(fil->handle); }