private bool queryEngine(string arguments, Action<string> onLineReceived)
{
Logger.Write("About to query {0} {1}", _path, arguments);
if (_process != null && !_process.HasExited) {
// TODO: Instad of locking use correlationID to be able to run requests in parallel
Logger.Write("Querying {0} {1}", _path, arguments);
lock (_processLock) {
_isQuerying = true;
if (onLineReceived != null)
_responseDispatcher = onLineReceived;
_process.StandardInput.WriteLine(arguments);
while (_isQuerying)
Thread.Sleep(10);
if (onLineReceived != null)
_responseDispatcher = (m) => {};
}
Logger.Write("Done - Querying {0} {1}", _path, arguments);
return true;
}
Logger.Write("Process is not ready {0} {1}", _path, arguments);
if (_process == null) {
Logger.Write("Process has not been started");
} else if (_process.HasExited) {
Logger.Write("Process has exited");
}
return false;
}