xref: /freebsd/contrib/llvm-project/lldb/source/Plugins/Protocol/MCP/MCPError.h (revision 700637cbb5e582861067a11aaca4d053546871d2)
1 //===-- MCPError.h --------------------------------------------------------===//
2 //
3 // Part of the LLVM Project, under the Apache License v2.0 with LLVM Exceptions.
4 // See https://llvm.org/LICENSE.txt for license information.
5 // SPDX-License-Identifier: Apache-2.0 WITH LLVM-exception
6 //
7 //===----------------------------------------------------------------------===//
8 
9 #include "Protocol.h"
10 #include "llvm/Support/Error.h"
11 #include "llvm/Support/FormatVariadic.h"
12 #include <string>
13 
14 namespace lldb_private::mcp {
15 
16 class MCPError : public llvm::ErrorInfo<MCPError> {
17 public:
18   static char ID;
19 
20   MCPError(std::string message, int64_t error_code = kInternalError);
21 
22   void log(llvm::raw_ostream &OS) const override;
23   std::error_code convertToErrorCode() const override;
24 
getMessage()25   const std::string &getMessage() const { return m_message; }
26 
27   protocol::Error toProtcolError() const;
28 
29   static constexpr int64_t kResourceNotFound = -32002;
30   static constexpr int64_t kInternalError = -32603;
31 
32 private:
33   std::string m_message;
34   int64_t m_error_code;
35 };
36 
37 class UnsupportedURI : public llvm::ErrorInfo<UnsupportedURI> {
38 public:
39   static char ID;
40 
41   UnsupportedURI(std::string uri);
42 
43   void log(llvm::raw_ostream &OS) const override;
44   std::error_code convertToErrorCode() const override;
45 
46 private:
47   std::string m_uri;
48 };
49 
50 } // namespace lldb_private::mcp
51