载入中...
搜索中...
未找到
McpArgs.hpp
浏览该文件的文档.
1#pragma once
2
3// Shared `arguments` accessors for the embedded MCP server and its satellite
4// tool modules. One copy keeps "missing field" and "wrong type" behaviour
5// identical across every tool family: both fall back to the caller's default
6// instead of throwing a protocol error at the agent.
7
8#include <Poco/JSON/Object.h>
9
10#include <string>
11
12namespace eve::dev {
13
15inline Poco::Dynamic::Var getArgVar(Poco::JSON::Object::Ptr args, const char* key) {
16 if (!args || !args->has(key)) return Poco::Dynamic::Var();
17 try {
18 return args->get(key);
19 } catch (...) {
20 return Poco::Dynamic::Var();
21 }
22}
23
25inline std::string getArgString(Poco::JSON::Object::Ptr args, const char* key, const std::string& def = {}) {
26 if (!args || !args->has(key)) return def;
27 try {
28 return args->get(key).convert<std::string>();
29 } catch (...) {
30 return def;
31 }
32}
33
35inline int getArgInt(Poco::JSON::Object::Ptr args, const char* key, int def = 0) {
36 if (!args || !args->has(key)) return def;
37 try {
38 return args->get(key).convert<int>();
39 } catch (...) {
40 return def;
41 }
42}
43
45inline long long getArgInt64(Poco::JSON::Object::Ptr args, const char* key, long long def = 0) {
46 if (!args || !args->has(key)) return def;
47 try {
48 return static_cast<long long>(args->get(key).convert<Poco::Int64>());
49 } catch (...) {
50 return def;
51 }
52}
53
55inline float getArgFloat(Poco::JSON::Object::Ptr args, const char* key, float def = 0.f) {
56 if (!args || !args->has(key)) return def;
57 try {
58 return static_cast<float>(args->get(key).convert<double>());
59 } catch (...) {
60 return def;
61 }
62}
63
65inline bool getArgBool(Poco::JSON::Object::Ptr args, const char* key, bool def = false) {
66 if (!args || !args->has(key)) return def;
67 try {
68 return args->get(key).convert<bool>();
69 } catch (...) {
70 return def;
71 }
72}
73
74} // namespace eve::dev
std::uint32_t key
bool getArgBool(Poco::JSON::Object::Ptr args, const char *key, bool def=false)
Boolean argument, or def when absent or not convertible.
Definition McpArgs.hpp:65
float getArgFloat(Poco::JSON::Object::Ptr args, const char *key, float def=0.f)
Floating-point argument, or def when absent or not convertible.
Definition McpArgs.hpp:55
Poco::Dynamic::Var getArgVar(Poco::JSON::Object::Ptr args, const char *key)
Raw JSON value of key, or an empty Var when absent.
Definition McpArgs.hpp:15
long long getArgInt64(Poco::JSON::Object::Ptr args, const char *key, long long def=0)
64-bit integer argument (sequence numbers, handles), or def.
Definition McpArgs.hpp:45
int getArgInt(Poco::JSON::Object::Ptr args, const char *key, int def=0)
Integer argument, or def when absent or not convertible.
Definition McpArgs.hpp:35
std::string getArgString(Poco::JSON::Object::Ptr args, const char *key, const std::string &def={})
String argument, or def when absent or not convertible.
Definition McpArgs.hpp:25