1
0
Fork 0

Implement log level for client messages

pull/759/head
Michael Morgan 2019-10-06 03:19:59 -04:00
parent 9dc1656592
commit 0cb7db8c91
4 changed files with 19 additions and 8 deletions

View File

@ -4,7 +4,7 @@ use LanguageServer\{LanguageServer, ProtocolStreamReader, ProtocolStreamWriter,
use Sabre\Event\Loop;
use Composer\XdebugHandler\XdebugHandler;
$options = getopt('', ['tcp::', 'tcp-server::', 'memory-limit::']);
$options = getopt('', ['tcp::', 'tcp-server::', 'memory-limit::', 'log-level::']);
ini_set('memory_limit', $options['memory-limit'] ?? '4G');
@ -69,6 +69,7 @@ if (!empty($options['tcp'])) {
while ($socket = stream_socket_accept($tcpServer, -1)) {
$logger->debug('Connection accepted');
stream_set_blocking($socket, false);
$logLevel = empty($options['log-level']) ? 4 : $options['log-level'];
if ($pcntlAvailable) {
// If PCNTL is available, fork a child process for the connection
// An exit notification will only terminate the child process
@ -83,7 +84,7 @@ if (!empty($options['tcp'])) {
$reader->on('close', function () use ($logger) {
$logger->debug('Connection closed');
});
$ls = new LanguageServer($reader, $writer);
$ls = new LanguageServer($reader, $writer, $logLevel);
Loop\run();
// Just for safety
exit(0);
@ -93,7 +94,8 @@ if (!empty($options['tcp'])) {
// An exit notification will terminate the server
$ls = new LanguageServer(
new ProtocolStreamReader($socket),
new ProtocolStreamWriter($socket)
new ProtocolStreamWriter($socket),
$logLevel
);
Loop\run();
}

View File

@ -15,10 +15,15 @@ class Window
* @var ClientHandler
*/
private $handler;
/**
* @var int
*/
private $logLevel;
public function __construct(ClientHandler $handler)
public function __construct(ClientHandler $handler, $logLevel=4)
{
$this->handler = $handler;
$this->logLevel = $logLevel;
}
/**
@ -43,6 +48,9 @@ class Window
*/
public function logMessage(int $type, string $message): Promise
{
if ($type > $this->logLevel) {
return new Promise();
}
return $this->handler->notify('window/logMessage', ['type' => $type, 'message' => $message]);
}
}

View File

@ -35,13 +35,13 @@ class LanguageClient
*/
public $xcache;
public function __construct(ProtocolReader $reader, ProtocolWriter $writer)
public function __construct(ProtocolReader $reader, ProtocolWriter $writer, $logLevel=4)
{
$handler = new ClientHandler($reader, $writer);
$mapper = new JsonMapper;
$this->textDocument = new Client\TextDocument($handler, $mapper);
$this->window = new Client\Window($handler);
$this->window = new Client\Window($handler, $logLevel);
$this->workspace = new Client\Workspace($handler, $mapper);
$this->xcache = new Client\XCache($handler);
}

View File

@ -109,8 +109,9 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
/**
* @param ProtocolReader $reader
* @param ProtocolWriter $writer
* @param int $logLevel
*/
public function __construct(ProtocolReader $reader, ProtocolWriter $writer)
public function __construct(ProtocolReader $reader, ProtocolWriter $writer, $logLevel=4)
{
parent::__construct($this, '/');
$this->protocolReader = $reader;
@ -154,7 +155,7 @@ class LanguageServer extends AdvancedJsonRpc\Dispatcher
})->otherwise('\\LanguageServer\\crash');
});
$this->protocolWriter = $writer;
$this->client = new LanguageClient($reader, $writer);
$this->client = new LanguageClient($reader, $writer, $logLevel);
}
/**