// Copyright 2017-2018 ccls Authors // SPDX-License-Identifier: Apache-2.0 #pragma once #include "lsp_diagnostic.h" #include "method.h" #include "query.h" #include #include #include struct GroupMatch; struct VFS; struct Project; struct WorkingFiles; struct lsBaseOutMessage; class DiagnosticsPublisher { std::unique_ptr match_; int64_t nextPublish_ = 0; int frequencyMs_; public: void Init(); void Publish(WorkingFiles* working_files, std::string path, std::vector diagnostics); }; namespace ccls { enum class IndexMode { NonInteractive, OnChange, Normal, }; namespace pipeline { void Init(); void LaunchStdin(); void LaunchStdout(); void Indexer_Main(DiagnosticsPublisher* diag_pub, VFS* vfs, Project* project, WorkingFiles* working_files); void MainLoop(); void Index(const std::string &path, const std::vector &args, IndexMode mode, lsRequestId id = {}); std::optional LoadCachedFileContents(const std::string& path); void WriteStdout(MethodType method, lsBaseOutMessage& response); } }