Current section
Files
Jump to
Current section
Files
src/aion@awl@error.erl
-module(aion@awl@error).
-compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]).
-define(FILEPATH, "src/aion/awl/error.gleam").
-export([codec/0, map_activity_error/1, map_receive_error/1, map_child_error/1, map_spawn_error/1, map_timer_error/1, map_engine_error/1]).
-export_type([awl_error/0]).
-if(?OTP_RELEASE >= 27).
-define(MODULEDOC(Str), -moduledoc(Str)).
-define(DOC(Str), -doc(Str)).
-else.
-define(MODULEDOC(Str), -compile([])).
-define(DOC(Str), -compile([])).
-endif.
?MODULEDOC(
" The fixed AWL workflow-error taxonomy: the `AwlError` type every generated\n"
" AWL module returns, its wire codec, and the six runtime-error mappers.\n"
"\n"
" Hoisted out of the emitted surface by AWL-BC-0 (hoist-only): the codec and\n"
" the mappers are workflow-independent fixed glue, identical across every\n"
" generated module. The variant atoms and the JSON shape are byte-identical\n"
" to the code the emitter used to inline, so durable trails and wire payloads\n"
" are unchanged by the move.\n"
).
-type awl_error() :: {awl_decode_input_failed, binary()} |
{awl_activity_failed, binary()} |
{awl_signal_failed, binary()} |
{awl_child_failed, binary()} |
{awl_timer_failed, binary()} |
{awl_timed_out, binary()} |
{awl_index_out_of_range, binary()} |
{awl_visits_exceeded, binary()} |
{awl_outcome_failure, binary(), binary()} |
awl_failed.
-file("src/aion/awl/error.gleam", 88).
-spec decoder() -> gleam@dynamic@decode:decoder(awl_error()).
decoder() ->
gleam@dynamic@decode:field(
<<"tag"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Tag) -> case Tag of
<<"AwlDecodeInputFailed"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message) ->
gleam@dynamic@decode:success(
{awl_decode_input_failed, Message}
)
end
);
<<"AwlActivityFailed"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@1) ->
gleam@dynamic@decode:success(
{awl_activity_failed, Message@1}
)
end
);
<<"AwlSignalFailed"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@2) ->
gleam@dynamic@decode:success(
{awl_signal_failed, Message@2}
)
end
);
<<"AwlChildFailed"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@3) ->
gleam@dynamic@decode:success(
{awl_child_failed, Message@3}
)
end
);
<<"AwlTimerFailed"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@4) ->
gleam@dynamic@decode:success(
{awl_timer_failed, Message@4}
)
end
);
<<"AwlTimedOut"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@5) ->
gleam@dynamic@decode:success(
{awl_timed_out, Message@5}
)
end
);
<<"AwlIndexOutOfRange"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@6) ->
gleam@dynamic@decode:success(
{awl_index_out_of_range, Message@6}
)
end
);
<<"AwlVisitsExceeded"/utf8>> ->
gleam@dynamic@decode:field(
<<"message"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Message@7) ->
gleam@dynamic@decode:success(
{awl_visits_exceeded, Message@7}
)
end
);
<<"AwlOutcomeFailure"/utf8>> ->
gleam@dynamic@decode:field(
<<"outcome"/utf8>>,
{decoder, fun gleam@dynamic@decode:decode_string/1},
fun(Outcome) ->
gleam@dynamic@decode:field(
<<"payload"/utf8>>,
{decoder,
fun gleam@dynamic@decode:decode_string/1},
fun(Payload) ->
gleam@dynamic@decode:success(
{awl_outcome_failure, Outcome, Payload}
)
end
)
end
);
<<"AwlFailed"/utf8>> ->
gleam@dynamic@decode:success(awl_failed);
_ ->
gleam@dynamic@decode:failure(
awl_failed,
<<"AwlError"/utf8>>
)
end end
).
-file("src/aion/awl/error.gleam", 36).
-spec to_json(awl_error()) -> gleam@json:json().
to_json(Error_value) ->
case Error_value of
{awl_decode_input_failed, Message} ->
gleam@json:object(
[{<<"tag"/utf8>>,
gleam@json:string(<<"AwlDecodeInputFailed"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message)}]
);
{awl_activity_failed, Message@1} ->
gleam@json:object(
[{<<"tag"/utf8>>,
gleam@json:string(<<"AwlActivityFailed"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@1)}]
);
{awl_signal_failed, Message@2} ->
gleam@json:object(
[{<<"tag"/utf8>>, gleam@json:string(<<"AwlSignalFailed"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@2)}]
);
{awl_child_failed, Message@3} ->
gleam@json:object(
[{<<"tag"/utf8>>, gleam@json:string(<<"AwlChildFailed"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@3)}]
);
{awl_timer_failed, Message@4} ->
gleam@json:object(
[{<<"tag"/utf8>>, gleam@json:string(<<"AwlTimerFailed"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@4)}]
);
{awl_timed_out, Message@5} ->
gleam@json:object(
[{<<"tag"/utf8>>, gleam@json:string(<<"AwlTimedOut"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@5)}]
);
{awl_index_out_of_range, Message@6} ->
gleam@json:object(
[{<<"tag"/utf8>>,
gleam@json:string(<<"AwlIndexOutOfRange"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@6)}]
);
{awl_visits_exceeded, Message@7} ->
gleam@json:object(
[{<<"tag"/utf8>>,
gleam@json:string(<<"AwlVisitsExceeded"/utf8>>)},
{<<"message"/utf8>>, gleam@json:string(Message@7)}]
);
{awl_outcome_failure, Outcome, Payload} ->
gleam@json:object(
[{<<"tag"/utf8>>,
gleam@json:string(<<"AwlOutcomeFailure"/utf8>>)},
{<<"outcome"/utf8>>, gleam@json:string(Outcome)},
{<<"payload"/utf8>>, gleam@json:string(Payload)}]
);
awl_failed ->
gleam@json:object(
[{<<"tag"/utf8>>, gleam@json:string(<<"AwlFailed"/utf8>>)}]
)
end.
-file("src/aion/awl/error.gleam", 32).
?DOC(" The workflow-error codec bound into every generated `definition()`.\n").
-spec codec() -> aion@codec:codec(awl_error()).
codec() ->
aion@codec:json_codec(fun to_json/1, decoder()).
-file("src/aion/awl/error.gleam", 134).
?DOC(" Collapse an activity dispatch failure to a step failure.\n").
-spec map_activity_error({ok, ECQ} | {error, aion@error:activity_error()}) -> {ok,
ECQ} |
{error, awl_error()}.
map_activity_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, _} ->
{error, {awl_activity_failed, <<"activity failed"/utf8>>}}
end.
-file("src/aion/awl/error.gleam", 144).
?DOC(" Collapse a signal receive failure to a step failure.\n").
-spec map_receive_error({ok, ECV} | {error, aion@error:receive_error()}) -> {ok,
ECV} |
{error, awl_error()}.
map_receive_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, _} ->
{error, {awl_signal_failed, <<"signal receive failed"/utf8>>}}
end.
-file("src/aion/awl/error.gleam", 154).
?DOC(" Collapse an awaited child-workflow failure to a step failure.\n").
-spec map_child_error({ok, EDA} | {error, aion@error:child_error(awl_error())}) -> {ok,
EDA} |
{error, awl_error()}.
map_child_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, {child_workflow_failed, Child_error}} ->
{error, Child_error};
{error, {child_output_decode_failed, Decode_error}} ->
{error,
{awl_child_failed,
<<"child output decode failed: "/utf8,
(erlang:element(2, Decode_error))/binary>>}};
{error, {child_error_decode_failed, Decode_error@1}} ->
{error,
{awl_child_failed,
<<"child error decode failed: "/utf8,
(erlang:element(2, Decode_error@1))/binary>>}};
{error, {child_engine_failure, Message}} ->
{error,
{awl_child_failed,
<<"child engine failure: "/utf8, Message/binary>>}}
end.
-file("src/aion/awl/error.gleam", 172).
?DOC(" Collapse a detached-spawn failure to a step failure.\n").
-spec map_spawn_error({ok, EDG} | {error, aion@error:engine_error()}) -> {ok,
EDG} |
{error, awl_error()}.
map_spawn_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, _} ->
{error, {awl_child_failed, <<"detached spawn failed"/utf8>>}}
end.
-file("src/aion/awl/error.gleam", 182).
?DOC(" Collapse a timer/sleep failure to a step failure.\n").
-spec map_timer_error({ok, EDL} | {error, aion@error:engine_error()}) -> {ok,
EDL} |
{error, awl_error()}.
map_timer_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, _} ->
{error, {awl_timer_failed, <<"timer failed"/utf8>>}}
end.
-file("src/aion/awl/error.gleam", 194).
?DOC(
" Collapse a workflow-context lookup failure to the language's generic\n"
" workflow failure. The context lookup is normally infallible for registered\n"
" workflow code; retaining the `Result` keeps misuse outside that context loud.\n"
).
-spec map_engine_error({ok, EDQ} | {error, aion@error:engine_error()}) -> {ok,
EDQ} |
{error, awl_error()}.
map_engine_error(Result) ->
case Result of
{ok, Value} ->
{ok, Value};
{error, _} ->
{error, awl_failed}
end.