| // Copyright 2019 the V8 project authors. All rights reserved. |
| // Use of this source code is governed by a BSD-style license that can be |
| // found in the LICENSE file. |
| |
| #include <fstream> |
| #include <iostream> |
| #include <sstream> |
| |
| #include "src/torque/ls/globals.h" |
| #include "src/torque/ls/message-handler.h" |
| #include "src/torque/ls/message-pipe.h" |
| #include "src/torque/server-data.h" |
| #include "src/torque/source-positions.h" |
| |
| namespace v8 { |
| namespace internal { |
| namespace torque { |
| namespace ls { |
| |
| int WrappedMain(int argc, const char** argv) { |
| Logger::Scope log_scope; |
| TorqueFileList::Scope files_scope; |
| LanguageServerData::Scope server_data_scope; |
| SourceFileMap::Scope source_file_map_scope(""); |
| DiagnosticsFiles::Scope diagnostics_files_scope; |
| |
| for (int i = 1; i < argc; ++i) { |
| if (!strcmp("-l", argv[i])) { |
| Logger::Enable(argv[++i]); |
| break; |
| } |
| } |
| |
| while (true) { |
| JsonValue message = ReadMessage(); |
| |
| // TODO(szuend): We should probably offload the actual message handling |
| // (even the parsing) to a background thread, so we can |
| // keep receiving messages. We might also receive |
| // $/cancelRequests or contet updates, that require restarts. |
| HandleMessage(std::move(message), &WriteMessage); |
| } |
| return 0; |
| } |
| |
| } // namespace ls |
| } // namespace torque |
| } // namespace internal |
| } // namespace v8 |
| |
| int main(int argc, const char** argv) { |
| return v8::internal::torque::ls::WrappedMain(argc, argv); |
| } |