17#ifndef A11_ACTIONS_SCHEMA_H_
18#define A11_ACTIONS_SCHEMA_H_
26#include <absl/container/flat_hash_map.h>
27#include <absl/status/status.h>
28#include <absl/status/statusor.h>
36 "application/x-a11-status";
41 "__dispatch_status__";
65 std::vector<std::optional<data::NodeFragment>>
autofills;
112 absl::flat_hash_map<std::string, ActionPortSchema>
inputs;
113 absl::flat_hash_map<std::string, ActionPortSchema>
115 absl::flat_hash_map<std::string, ActionHeaderSchema>
headers;
127 std::string field_name = {});
152absl::StatusOr<data::Chunk>
StatusToChunk(
const absl::Status& status);
constexpr std::string_view kActionStatusMimetype
Mimetype marking a chunk that carries an action status.
Definition schema.h:35
bool IsStatusChunk(const data::Chunk &chunk)
Whether chunk carries an encoded action status.
Definition schema.cc:157
constexpr std::string_view kActionDispatchStatusOutput
Reserved output port name carrying the remote dispatch status.
Definition schema.h:40
constexpr std::string_view kActionStatusOutput
Reserved output port name carrying the action's completion status.
Definition schema.h:38
constexpr std::string_view kActionHeaderPrefix
Prefix reserved for A11's framework headers.
Definition schema.h:47
absl::StatusOr< absl::Status > StatusFromChunk(const data::Chunk &chunk)
Decodes a status previously encoded by StatusToChunk.
Definition schema.cc:141
constexpr std::string_view kCancelActionHeader
Header naming the action targeted by a cancel request.
Definition schema.h:45
constexpr std::string_view kCancelActionName
Reserved action name used to signal cancellation to a peer.
Definition schema.h:43
absl::StatusOr< data::Chunk > StatusToChunk(const absl::Status &status)
Encodes a status as a chunk (mimetype kActionStatusMimetype).
Definition schema.cc:130
Schema for a single input or output port of an action.
Definition schema.h:58
bool unary
Whether the port carries a single value.
Definition schema.h:63
absl::Status Validate() const
Validates the port schema.
Definition schema.cc:21
std::string type
Payload type name.
Definition schema.h:60
std::shared_ptr< void > typeinfo
Opaque, owning language-binding type handle (e.g.
Definition schema.h:74
bool required
Whether the port must be supplied.
Definition schema.h:62
std::string description
Human-readable description.
Definition schema.h:61
std::string name
Port name (unique within its direction).
Definition schema.h:59
std::vector< std::optional< data::NodeFragment > > autofills
Input-default fragments; an autofilled input must otherwise be empty.
Definition schema.h:65
friend bool operator==(const ActionPortSchema &, const ActionPortSchema &)=default
The full typed interface of an action.
Definition schema.h:107
absl::Status MapOutputToJson(std::string output_name, std::string field_name={})
Maps an output port onto a JSON result field.
Definition schema.cc:102
static constexpr std::string_view kWholeJson
Whole-JSON target.
Definition schema.h:108
absl::flat_hash_map< std::string, ActionPortSchema > inputs
Input ports.
Definition schema.h:112
friend bool operator==(const ActionSchema &, const ActionSchema &)=default
absl::flat_hash_map< std::string, ActionHeaderSchema > headers
Headers.
Definition schema.h:115
absl::flat_hash_map< std::string, ActionPortSchema > outputs
Output ports.
Definition schema.h:114
std::string description
Human-readable description.
Definition schema.h:111
absl::flat_hash_map< std::string, std::string > output_to_json_field
Maps output port names to JSON result fields.
Definition schema.h:117
std::string name
Action name.
Definition schema.h:110
absl::Status Validate() const
Validates the schema and all of its ports and headers.
Definition schema.cc:39
Per-action runtime settings for stream binding and cleanup.
Definition schema.h:139
bool clear_inputs_after_run
Release inputs after each run.
Definition schema.h:144
friend bool operator==(const ActionSettings &, const ActionSettings &)=default
std::optional< bool > bind_streams_on_outputs_by_default
Bind output port streams by default when unset per-port.
Definition schema.h:143
std::optional< bool > bind_streams_on_inputs_by_default
Bind input port streams by default when unset per-port.
Definition schema.h:141
bool clear_outputs_after_run
Release outputs after each run.
Definition schema.h:145
A unit of data: bytes plus optional descriptive metadata.
Definition types.h:95
A11's core wire value types: chunks, node fragments and messages.