summaryrefslogtreecommitdiffstats
path: root/clang-tools-extra
diff options
context:
space:
mode:
authorBenjamin Kramer <benny.kra@googlemail.com>2017-02-10 17:25:38 +0000
committerBenjamin Kramer <benny.kra@googlemail.com>2017-02-10 17:25:38 +0000
commite15fe37506e546b0e97670aa9f1f5f9d751b2c32 (patch)
tree394cf155aa046ebc4714351219194e7f2fea213f /clang-tools-extra
parentf1423e893dbafabc27b8d08a631bb8dd286f7b82 (diff)
downloadbcm5719-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.cpp7
-rw-r--r--clang-tools-extra/clangd/JSONRPCDispatcher.h7
-rw-r--r--clang-tools-extra/clangd/ProtocolHandlers.h7
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 {
OpenPOWER on IntegriCloud