diff --git a/ycmd/completers/language_server/language_server_completer.py b/ycmd/completers/language_server/language_server_completer.py index 7ecd6d0942..cfcaf183e5 100644 --- a/ycmd/completers/language_server/language_server_completer.py +++ b/ycmd/completers/language_server/language_server_completer.py @@ -28,7 +28,6 @@ import logging import os import queue -import socket import threading from ycmd.completers.completer import Completer @@ -310,186 +309,6 @@ def _Read( self, size=-1 ): pass - -class TCPSingleStreamServer( LanguageServerConnection, threading.Thread ): - def __init__( self, port, notification_handler = None ): - super( TCPSingleStreamServer, self ).__init__( notification_handler ) - - self._port = port - self._socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - self._client_socket = None - - - def run( self ): - self._socket.bind( ( 'localhost', self._port ) ) - self._socket.listen( 0 ) - - self._run_loop() - - - def _Close( self ): - if self._client_socket: - self._client_socket.close() - - if self._socket: - self._socket.close() - - - def _TryServerConnectionBlocking( self ): - ( self._client_socket, _ ) = self._socket.accept() - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - _logger.info( 'language server socket connected' ) - - return True - - - def _Write( self, data ): - assert self._connection_event.isSet() - assert self._client_socket - - total_sent = 0 - while total_sent < len( data ): - sent = self._client_socket.send( data[ total_sent: ] ) - if sent == 0: - raise RuntimeError( 'write socket failed' ) - - total_sent += sent - - - def _Read( self, size=-1 ): - assert self._connection_event.isSet() - assert self._client_socket - - if size < 0: - data = self._client_socket.recv( 2048 ) - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - if data == bytes( b'' ): - raise RuntimeError( 'read socket failed' ) - - return data - - chunks = [] - bytes_read = 0 - while bytes_read < size: - chunk = self._client_socket.recv( min( size - bytes_read , 2048 ) ) - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - if chunk == bytes( b'' ): - raise RuntimeError( 'read socket failed' ) - - chunks.append( chunk ) - bytes_read += len( chunk ) - - return utils.ToBytes( '' ).join( chunks ) - - -class TCPMultiStreamServer( LanguageServerConnection, threading.Thread ): - def __init__( self, input_port, output_port, notification_handler = None ): - super( TCPMultiStreamServer, self ).__init__( notification_handler ) - - self._connection_event = threading.Event() - - self._input_port = input_port - self._input_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - - self._output_port = output_port - self._output_socket = socket.socket( socket.AF_INET, socket.SOCK_STREAM ) - - self._client_read_socket = None - self._client_write_socket = None - - - def run( self ): - self._input_socket.bind( ( 'localhost', self._input_port ) ) - self._input_socket.listen( 0 ) - - self._output_socket.bind( ( 'localhost', self._output_port ) ) - self._output_socket.listen( 0 ) - - self._run_loop() - - - def _Close( self ): - if self._client_read_socket: - self._client_read_socket.close() - - if self._client_write_socket: - self._client_write_socket.close() - - if self._input_socket: - self._input_socket.close() - - if self._output_socket: - self._output_socket.close() - - - def _TryServerConnectionBlocking( self ): - ( self._client_read_socket, _ ) = self._input_socket.accept() - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - _logger.info( 'Language server Input socket connected' ) - - ( self._client_write_socket, _ ) = self._output_socket.accept() - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - _logger.info( 'Language server Output socket connected' ) - - - def _Write( self, data ): - assert self._client_write_socket - - total_sent = 0 - while total_sent < len( data ): - sent = self._client_write_socket.send( data[ total_sent: ] ) - if sent == 0: - raise RuntimeError( 'write socket failed' ) - - total_sent += sent - - - def _Read( self, size=-1 ): - assert self._client_read_socket - - if size < 0: - data = self._client_read_socket.recv( 2048 ) - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - if data == bytes( b'' ): - raise RuntimeError( 'read socket failed' ) - - return data - - chunks = [] - bytes_read = 0 - while bytes_read < size: - chunk = self._client_read_socket.recv( min( size - bytes_read , 2048 ) ) - - if self.IsStopped(): - raise LanguageServerConnectionStopped() - - if chunk == bytes( b'' ): - raise RuntimeError( 'read socket failed' ) - - chunks.append( chunk ) - bytes_read += len( chunk ) - - return utils.ToBytes( '' ).join( chunks ) - - class StandardIOLanguageServerConnection( LanguageServerConnection, threading.Thread ): def __init__( self, server_stdin,