using namespace std;
+
/**
* Constructor
* @param executablePath - path to the program that will be run
*/
Program::Program(const char * executablePath) : input(NULL), output(NULL), pid(0)
{
+
+
int readPipe[2]; int writePipe[2];
assert(pipe(readPipe) == 0);
assert(pipe(writePipe) == 0);
* Sends a message to the wrapped AI program
* WARNING: Always prints a new line after the message (so don't include a new line)
* This is because everything is always line buffered.
+ * @returns true if the message was successfully sent; false if it was not (ie: the process was not running!)
*/
bool Program::SendMessage(const char * print, ...)
{
va_list ap;
va_start(ap, print);
- vfprintf(output, print, ap);
- fprintf(output, "\n");
-
+ if (vfprintf(output, print, ap) < 0 || fprintf(output, "\n") < 0)
+ {
+ va_end(ap);
+ return false;
+ }
+ va_end(ap);
- va_end(ap);
+
return true;
}
}
+
+