Skip to content

Commit 8fd77d6

Browse files
frabertxlauko
authored andcommitted
pr: Add ability to ask for function model via JSONRPC.
1 parent ec93a97 commit 8fd77d6

File tree

1 file changed

+35
-4
lines changed

1 file changed

+35
-4
lines changed

lib/vast/Conversion/Parser/ToParser.cpp

Lines changed: 35 additions & 4 deletions
Original file line numberDiff line numberDiff line change
@@ -1050,8 +1050,36 @@ namespace vast::conv {
10501050
{
10511051
using base = ConversionPassMixin< HLToParserPass, HLToParserBase >;
10521052

1053+
struct get_function_model_request
1054+
{
1055+
static constexpr const char *method = "get_function_model";
1056+
static constexpr bool is_notification = false;
1057+
1058+
std::string functionName;
1059+
1060+
NLOHMANN_DEFINE_TYPE_INTRUSIVE(get_function_model_request, functionName)
1061+
1062+
using response_type = function_model;
1063+
};
1064+
10531065
struct server_handler
1054-
{};
1066+
{
1067+
function_models &models;
1068+
1069+
server::result_type< get_function_model_request >
1070+
operator()(server::server_base &server, const get_function_model_request &req) {
1071+
if (auto model = models.get(req.functionName)) {
1072+
return *model;
1073+
} else {
1074+
return server::error< get_function_model_request >{
1075+
.code = 0,
1076+
.message = "No model for function " + req.functionName + " available"
1077+
};
1078+
}
1079+
}
1080+
};
1081+
1082+
static_assert(server::request_like< get_function_model_request >);
10551083

10561084
static conversion_target create_conversion_target(mcontext_t &mctx) {
10571085
return conversion_target(mctx);
@@ -1078,8 +1106,10 @@ namespace vast::conv {
10781106
}
10791107

10801108
if (!socket.empty()) {
1081-
server = std::make_shared< vast::server::server< server_handler > >(
1082-
vast::server::sock_adapter::create_unix_socket(socket)
1109+
server = std::make_shared<
1110+
vast::server::server< server_handler, get_function_model_request > >(
1111+
vast::server::sock_adapter::create_unix_socket(socket), 1,
1112+
server_handler{ models }
10831113
);
10841114
}
10851115
}
@@ -1113,7 +1143,8 @@ namespace vast::conv {
11131143
}
11141144

11151145
function_models models;
1116-
std::shared_ptr< vast::server::server< server_handler > > server;
1146+
std::shared_ptr< vast::server::server< server_handler, get_function_model_request > >
1147+
server;
11171148
};
11181149

11191150
} // namespace vast::conv

0 commit comments

Comments
 (0)