diff options
-rw-r--r-- | clang-tools-extra/clangd/ClangDMain.cpp | 7 | ||||
-rw-r--r-- | clang-tools-extra/clangd/JSONRPCDispatcher.h | 7 | ||||
-rw-r--r-- | clang-tools-extra/clangd/ProtocolHandlers.h | 7 |
3 files changed, 10 insertions, 11 deletions
diff --git a/clang-tools-extra/clangd/ClangDMain.cpp b/clang-tools-extra/clangd/ClangDMain.cpp index 6ebdb63a044..53762b18935 100644 --- a/clang-tools-extra/clangd/ClangDMain.cpp +++ b/clang-tools-extra/clangd/ClangDMain.cpp @@ -30,8 +30,9 @@ int main(int argc, char *argv[]) { JSONRPCDispatcher Dispatcher(llvm::make_unique<Handler>(Out)); Dispatcher.registerHandler("initialize", llvm::make_unique<InitializeHandler>(Out)); - Dispatcher.registerHandler("shutdown", - llvm::make_unique<ShutdownHandler>(Out)); + auto ShutdownPtr = llvm::make_unique<ShutdownHandler>(Out); + auto *ShutdownHandler = ShutdownPtr.get(); + Dispatcher.registerHandler("shutdown",std::move(ShutdownPtr)); Dispatcher.registerHandler( "textDocument/didOpen", llvm::make_unique<TextDocumentDidOpenHandler>(Out, Store)); @@ -92,7 +93,7 @@ int main(int argc, char *argv[]) { Logs << "JSON dispatch failed!\n"; // If we're done, exit the loop. - if (Out.isDone()) + if (ShutdownHandler->isDone()) break; } } diff --git a/clang-tools-extra/clangd/JSONRPCDispatcher.h b/clang-tools-extra/clangd/JSONRPCDispatcher.h index d7a026bd365..60f81031e62 100644 --- a/clang-tools-extra/clangd/JSONRPCDispatcher.h +++ b/clang-tools-extra/clangd/JSONRPCDispatcher.h @@ -31,17 +31,10 @@ public: /// Get the logging stream. llvm::raw_ostream &logs() { return Logs; } - /// Use this to indicate that the output stream should be closed and the - /// process should terminate. - void setDone() { Done = true; } - bool isDone() const { return Done; } - private: llvm::raw_ostream &Outs; llvm::raw_ostream &Logs; - bool Done = false; - std::mutex StreamMutex; }; diff --git a/clang-tools-extra/clangd/ProtocolHandlers.h b/clang-tools-extra/clangd/ProtocolHandlers.h index 918a179b14a..a740a4f073f 100644 --- a/clang-tools-extra/clangd/ProtocolHandlers.h +++ b/clang-tools-extra/clangd/ProtocolHandlers.h @@ -42,8 +42,13 @@ struct ShutdownHandler : Handler { ShutdownHandler(JSONOutput &Output) : Handler(Output) {} void handleMethod(llvm::yaml::MappingNode *Params, StringRef ID) override { - Output.setDone(); + IsDone = true; } + + bool isDone() const { return IsDone; } + +private: + bool IsDone = false; }; struct TextDocumentDidOpenHandler : Handler { |