ORE Studio 0.0.4
Loading...
Searching...
No Matches
work_protocol.hpp
1/* -*- mode: c++; tab-width: 4; indent-tabs-mode: nil; c-basic-offset: 4 -*-
2 *
3 * Copyright (C) 2026 Marco Craveiro <marco.craveiro@gmail.com>
4 *
5 * This program is free software; you can redistribute it and/or modify it under
6 * the terms of the GNU General Public License as published by the Free Software
7 * Foundation; either version 3 of the License, or (at your option) any later
8 * version.
9 *
10 * This program is distributed in the hope that it will be useful, but WITHOUT
11 * ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS
12 * FOR A PARTICULAR PURPOSE. See the GNU General Public License for more
13 * details.
14 *
15 * You should have received a copy of the GNU General Public License along with
16 * this program; if not, write to the Free Software Foundation, Inc., 51
17 * Franklin Street, Fifth Floor, Boston, MA 02110-1301, USA.
18 *
19 */
20#ifndef ORES_COMPUTE_MESSAGING_WORK_PROTOCOL_HPP
21#define ORES_COMPUTE_MESSAGING_WORK_PROTOCOL_HPP
22
23#include <string>
24#include <string_view>
25
26namespace ores::compute::messaging {
27
28struct pull_work_request {
29 using response_type = struct pull_work_response;
30 static constexpr std::string_view nats_subject =
31 "compute.v1.work.pull";
32 std::string host_id;
33};
34
35struct pull_work_response {
36 bool success = false;
37 std::string result_id;
38 std::string workunit_id;
39 std::string app_version_id;
40 std::string input_uri;
41 std::string config_uri;
42 std::string message;
43};
44
54 std::string result_id;
55 std::string workunit_id;
56 std::string app_version_id; // identifies the cached package
57 std::string package_uri; // engine bundle (.tar.gz) to download and cache
58 std::string input_uri; // job input data (HTTP GET)
59 std::string config_uri; // job config passed through to engine (HTTP GET)
60 std::string output_uri; // pre-assigned upload location for result (HTTP PUT)
61};
62
63struct heartbeat_message {
64 static constexpr std::string_view nats_subject =
65 "compute.v1.work.heartbeat";
66 std::string host_id;
67};
68
69struct reap_work_message {
70 static constexpr std::string_view nats_subject =
71 "compute.v1.work.reap";
72};
73
74}
75
76#endif
Payload published to the COMPUTE JetStream stream on workunit dispatch.
Definition work_protocol.hpp:53