Implement log level for client messages
parent
9dc1656592
commit
0cb7db8c91
|
@ -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();
|
||||
}
|
||||
|
|
|
@ -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]);
|
||||
}
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
|
|
@ -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);
|
||||
}
|
||||
|
||||
/**
|
||||
|
|
Loading…
Reference in New Issue