diff options
| author | Benjamin Kramer <benny.kra@googlemail.com> | 2017-02-10 17:25:38 +0000 |
|---|---|---|
| committer | Benjamin Kramer <benny.kra@googlemail.com> | 2017-02-10 17:25:38 +0000 |
| commit | e15fe37506e546b0e97670aa9f1f5f9d751b2c32 (patch) | |
| tree | 394cf155aa046ebc4714351219194e7f2fea213f /clang-tools-extra | |
| parent | f1423e893dbafabc27b8d08a631bb8dd286f7b82 (diff) | |
| download | bcm5719-llvm-e15fe37506e546b0e97670aa9f1f5f9d751b2c32.tar.gz bcm5719-llvm-e15fe37506e546b0e97670aa9f1f5f9d751b2c32.zip | |
[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.
llvm-svn: 294760
Diffstat (limited to 'clang-tools-extra')
| -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 { |

