OpenIDE.Core.Language.LanguagePlugin.queryEngine C# (CSharp) Méthode

queryEngine() private méthode

private queryEngine ( string arguments, Action onLineReceived ) : bool
arguments string
onLineReceived Action
Résultat bool
        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;
        }