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

View File

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

View File

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

View File

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