[clang-tools-extra] r294760 - [clangd] Move isDone from the JSONOutput to ShutdownHandler.

Benjamin Kramer via cfe-commits cfe-commits at lists.llvm.org
Fri Feb 10 09:25:38 PST 2017


Author: d0k
Date: Fri Feb 10 11:25:38 2017
New Revision: 294760

URL: http://llvm.org/viewvc/llvm-project?rev=294760&view=rev
Log:
[clangd] Move isDone from the JSONOutput to ShutdownHandler.

This is just as easy to check from main but prevents random code from
shutting down the server.

Modified:
    clang-tools-extra/trunk/clangd/ClangDMain.cpp
    clang-tools-extra/trunk/clangd/JSONRPCDispatcher.h
    clang-tools-extra/trunk/clangd/ProtocolHandlers.h

Modified: clang-tools-extra/trunk/clangd/ClangDMain.cpp
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ClangDMain.cpp?rev=294760&r1=294759&r2=294760&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/ClangDMain.cpp (original)
+++ clang-tools-extra/trunk/clangd/ClangDMain.cpp Fri Feb 10 11:25:38 2017
@@ -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;
     }
   }

Modified: clang-tools-extra/trunk/clangd/JSONRPCDispatcher.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/JSONRPCDispatcher.h?rev=294760&r1=294759&r2=294760&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/JSONRPCDispatcher.h (original)
+++ clang-tools-extra/trunk/clangd/JSONRPCDispatcher.h Fri Feb 10 11:25:38 2017
@@ -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;
 };
 

Modified: clang-tools-extra/trunk/clangd/ProtocolHandlers.h
URL: http://llvm.org/viewvc/llvm-project/clang-tools-extra/trunk/clangd/ProtocolHandlers.h?rev=294760&r1=294759&r2=294760&view=diff
==============================================================================
--- clang-tools-extra/trunk/clangd/ProtocolHandlers.h (original)
+++ clang-tools-extra/trunk/clangd/ProtocolHandlers.h Fri Feb 10 11:25:38 2017
@@ -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 {




More information about the cfe-commits mailing list