def __init__(self, user_options): self._user_options = user_options self._server_popen = None self._setup_server() self._keep_alive_thread = YCMDKeepAlive() self._keep_alive_thread.start()
class SublimeYouCompleteMe(object): """ A wrapper for the YCMD server """ def __init__(self, user_options): self._user_options = user_options self._server_popen = None self._setup_server() self._keep_alive_thread = YCMDKeepAlive() self._keep_alive_thread.start() def _setup_server(self): """ Start the YCMD server """ port = utils.get_unused_localhost_port() with tempfile.NamedTemporaryFile(mode="w", delete=False) as options_file: # This file is deleted by YCMD when it starts hmac_secret = os.urandom(16) options_dict = self._user_options.copy() options_dict["hmac_secret"] = base64.b64encode(hmac_secret).\ decode(encoding="utf-8") json.dump(options_dict, options_file) options_file.flush() command = [utils.path_to_python(), os.path.join("ycmd", "ycmd"), "--port={0}".format(port), "--options_file={0}".format(options_file.name), # '--log={0}'.format( self._user_options[ 'server_log_level' ] ), "--idle_suicide_seconds={0}".format( SERVER_IDLE_SUICIDE_SECONDS)] # if not self._user_options[ 'server_use_vim_stdout' ]: # filename_format = os.path.join( utils.PathToTempDir(), # 'server_{port}_{std}.log' ) # self._server_stdout = filename_format.format( port = server_port, # std = 'stdout' ) # self._server_stderr = filename_format.format( port = server_port, # std = 'stderr' ) # args.append('--stdout={0}'.format( self._server_stdout )) # args.append('--stderr={0}'.format( self._server_stderr )) # if self._user_options[ 'server_keep_logfiles' ]: # args.append('--keep_logfiles') self._server_popen = subprocess.Popen(command, stdout=None, # subprocess.PIPE stderr=None, # subprocess.PIPE cwd=DIR_OF_THIS_SCRIPT) YCMDRequest.server_base_URI = "http://127.0.0.1:{0}".format(port) YCMDRequest.shared_hmac_secret = hmac_secret def is_server_alive(self): """ Test if the server process is alive """ # When the process hasn't finished yet, poll() returns None. return self._server_popen.poll() is None def server_shutdown(self): """ Shutdown the server """ if self.is_server_alive(): self._server_popen.terminate() self._keep_alive_thread.stop()
class SublimeYouCompleteMe(object): """ A wrapper for the YCMD server """ def __init__(self, user_options): self._user_options = user_options self._server_popen = None self._setup_server() self._keep_alive_thread = YCMDKeepAlive() self._keep_alive_thread.start() def _setup_server(self): """ Start the YCMD server """ port = utils.get_unused_localhost_port() with tempfile.NamedTemporaryFile(mode="w", delete=False) as options_file: # This file is deleted by YCMD when it starts hmac_secret = os.urandom(16) options_dict = self._user_options.copy() options_dict["hmac_secret"] = base64.b64encode(hmac_secret).\ decode(encoding="utf-8") json.dump(options_dict, options_file) options_file.flush() command = [ utils.path_to_python(), os.path.join("ycmd", "ycmd"), "--port={0}".format(port), "--options_file={0}".format(options_file.name), # '--log={0}'.format( self._user_options[ 'server_log_level' ] ), "--idle_suicide_seconds={0}".format(SERVER_IDLE_SUICIDE_SECONDS ) ] # if not self._user_options[ 'server_use_vim_stdout' ]: # filename_format = os.path.join( utils.PathToTempDir(), # 'server_{port}_{std}.log' ) # self._server_stdout = filename_format.format( port = server_port, # std = 'stdout' ) # self._server_stderr = filename_format.format( port = server_port, # std = 'stderr' ) # args.append('--stdout={0}'.format( self._server_stdout )) # args.append('--stderr={0}'.format( self._server_stderr )) # if self._user_options[ 'server_keep_logfiles' ]: # args.append('--keep_logfiles') self._server_popen = subprocess.Popen( command, stdout=None, # subprocess.PIPE stderr=None, # subprocess.PIPE cwd=DIR_OF_THIS_SCRIPT) YCMDRequest.server_base_URI = "http://127.0.0.1:{0}".format(port) YCMDRequest.shared_hmac_secret = hmac_secret def is_server_alive(self): """ Test if the server process is alive """ # When the process hasn't finished yet, poll() returns None. return self._server_popen.poll() is None def server_shutdown(self): """ Shutdown the server """ if self.is_server_alive(): self._server_popen.terminate() self._keep_alive_thread.stop()