-module(aion@activity). -compile([no_auto_import, nowarn_unused_vars, nowarn_unused_function, nowarn_nomatch, inline]). -define(FILEPATH, "src/aion/activity.gleam"). -export([new/5, retry/2, timeout/2, heartbeat/2, name/1, input/1, input_codec/1, output_codec/1, runner/1, retry_policy/1, timeout_duration/1, heartbeat_interval/1]). -export_type([backoff/0, retry_policy/0, activity/2]). -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(" Typed activity values and policy configuration.\n"). -type backoff() :: {exponential, aion@duration:duration(), float(), aion@duration:duration()} | {linear, aion@duration:duration(), aion@duration:duration(), aion@duration:duration()} | {fixed, aion@duration:duration()}. -type retry_policy() :: {retry_policy, integer(), backoff()}. -opaque activity(DPB, DPC) :: {activity, binary(), DPB, aion@codec:codec(DPB), aion@codec:codec(DPC), fun((DPB) -> {ok, DPC} | {error, aion@error:activity_error()}), gleam@option:option(retry_policy()), gleam@option:option(aion@duration:duration()), gleam@option:option(aion@duration:duration())}. -file("src/aion/activity.gleam", 64). ?DOC( " Build a typed activity value with no retry, timeout, or heartbeat config.\n" "\n" " Absence of config is intentional data: there are no hidden defaults. In\n" " particular, an activity with no `retry` decorator runs exactly once when it\n" " is dispatched by the engine.\n" ). -spec new( binary(), DPD, aion@codec:codec(DPD), aion@codec:codec(DPF), fun((DPD) -> {ok, DPF} | {error, aion@error:activity_error()}) ) -> activity(DPD, DPF). new(Name, Input, Input_codec, Output_codec, Run) -> {activity, Name, Input, Input_codec, Output_codec, Run, none, none, none}. -file("src/aion/activity.gleam", 87). ?DOC( " Attach an explicit retry policy to an activity.\n" "\n" " Later calls replace earlier retry policy values; the SDK does not merge or\n" " synthesize policy fields.\n" ). -spec retry(activity(DPL, DPM), retry_policy()) -> activity(DPL, DPM). retry(Activity, Policy) -> {activity, erlang:element(2, Activity), erlang:element(3, Activity), erlang:element(4, Activity), erlang:element(5, Activity), erlang:element(6, Activity), {some, Policy}, erlang:element(8, Activity), erlang:element(9, Activity)}. -file("src/aion/activity.gleam", 101). ?DOC(" Attach an explicit timeout duration to an activity.\n"). -spec timeout(activity(DPR, DPS), aion@duration:duration()) -> activity(DPR, DPS). timeout(Activity, Timeout_duration) -> {activity, erlang:element(2, Activity), erlang:element(3, Activity), erlang:element(4, Activity), erlang:element(5, Activity), erlang:element(6, Activity), erlang:element(7, Activity), {some, Timeout_duration}, erlang:element(9, Activity)}. -file("src/aion/activity.gleam", 118). ?DOC(" Attach an explicit heartbeat interval to an activity.\n"). -spec heartbeat(activity(DPX, DPY), aion@duration:duration()) -> activity(DPX, DPY). heartbeat(Activity, Heartbeat_interval) -> {activity, erlang:element(2, Activity), erlang:element(3, Activity), erlang:element(4, Activity), erlang:element(5, Activity), erlang:element(6, Activity), erlang:element(7, Activity), erlang:element(8, Activity), {some, Heartbeat_interval}}. -file("src/aion/activity.gleam", 135). ?DOC(" Return the activity name used by the engine dispatch boundary.\n"). -spec name(activity(any(), any())) -> binary(). name(Activity) -> erlang:element(2, Activity). -file("src/aion/activity.gleam", 140). ?DOC(" Return the typed input captured by the activity value.\n"). -spec input(activity(DQH, any())) -> DQH. input(Activity) -> erlang:element(3, Activity). -file("src/aion/activity.gleam", 145). ?DOC(" Return the typed input codec captured by the activity value.\n"). -spec input_codec(activity(DQL, any())) -> aion@codec:codec(DQL). input_codec(Activity) -> erlang:element(4, Activity). -file("src/aion/activity.gleam", 150). ?DOC(" Return the typed output codec captured by the activity value.\n"). -spec output_codec(activity(any(), DQR)) -> aion@codec:codec(DQR). output_codec(Activity) -> erlang:element(5, Activity). -file("src/aion/activity.gleam", 155). ?DOC(" Return the typed runner captured by the activity value.\n"). -spec runner(activity(DQV, DQW)) -> fun((DQV) -> {ok, DQW} | {error, aion@error:activity_error()}). runner(Activity) -> erlang:element(6, Activity). -file("src/aion/activity.gleam", 162). ?DOC(" Return the explicitly attached retry policy, if one exists.\n"). -spec retry_policy(activity(any(), any())) -> gleam@option:option(retry_policy()). retry_policy(Activity) -> erlang:element(7, Activity). -file("src/aion/activity.gleam", 167). ?DOC(" Return the explicitly attached timeout duration, if one exists.\n"). -spec timeout_duration(activity(any(), any())) -> gleam@option:option(aion@duration:duration()). timeout_duration(Activity) -> erlang:element(8, Activity). -file("src/aion/activity.gleam", 172). ?DOC(" Return the explicitly attached heartbeat interval, if one exists.\n"). -spec heartbeat_interval(activity(any(), any())) -> gleam@option:option(aion@duration:duration()). heartbeat_interval(Activity) -> erlang:element(9, Activity).