/// <summary> /// LSPサーバを起動する /// </summary> /// <param name="serverConfigFilename"></param> /// <param name="currentSourceCodeDirectory"></param> /// <returns></returns> IWorker IHidemaruLspBackEndServer.CreateWorker( string ServerName, string ExcutablePath, string Arguments, string RootUri, string WorkspaceConfig, long HidemaruProcessId) { var logger = LogManager.GetCurrentClassLogger(); try { var holderKey = new LspKey(ServerName, RootUri); if (workerHolder_.ContainsKey(holderKey)) { var w = workerHolder_[holderKey]; w.Used(); logger.Debug("w.referenceCounter={0}", w.referenceCounter); return(w.GetWorker()); } var ins = new Worker(holderKey); var ret = ins.Start(ServerName, ExcutablePath, Arguments, RootUri, WorkspaceConfig, HidemaruProcessId); if (ret == false) { return(null); } var value = new WorkerPair(ins); logger.Debug("value.referenceCounter={0}", value.referenceCounter); workerHolder_[holderKey] = value; return(ins); }catch (Exception e) { logger.Error(e); } return(null); }
public Worker(LspKey key) { this.key = key; }