diff --git a/src/Activity/ActivityCancellationDetails.php b/src/Activity/ActivityCancellationDetails.php index 9ec7e6ce..0cc44fdc 100644 --- a/src/Activity/ActivityCancellationDetails.php +++ b/src/Activity/ActivityCancellationDetails.php @@ -18,5 +18,6 @@ public function __construct( public readonly bool $paused = false, public readonly bool $timedOut = false, public readonly bool $workerShutdown = false, + public readonly bool $reset = false, ) {} } diff --git a/src/Activity/ActivityContextInterface.php b/src/Activity/ActivityContextInterface.php index 3ad652e5..03adac9d 100644 --- a/src/Activity/ActivityContextInterface.php +++ b/src/Activity/ActivityContextInterface.php @@ -17,6 +17,7 @@ use Temporal\Exception\Client\ActivityCanceledException; use Temporal\Exception\Client\ActivityCompletionException; use Temporal\Exception\Client\ActivityPausedException; +use Temporal\Exception\Client\ActivityResetException; interface ActivityContextInterface { @@ -63,6 +64,7 @@ public function doNotCompleteOnReturn(): void; * @throws ActivityCompletionException * @throws ActivityCanceledException * @throws ActivityPausedException + * @throws ActivityResetException * * @see Activity::heartbeat() * diff --git a/src/Exception/Client/ActivityPausedException.php b/src/Exception/Client/ActivityPausedException.php index 81ab22e0..b2774fdc 100644 --- a/src/Exception/Client/ActivityPausedException.php +++ b/src/Exception/Client/ActivityPausedException.php @@ -15,6 +15,6 @@ * Indicates that the activity was paused by the user. * * Catching this exception directly is discouraged and catching - * the parent class {@link ActivityCompletionException} is recommended instead. + * the parent class {@see ActivityCompletionException} is recommended instead. */ final class ActivityPausedException extends ActivityCompletionException {} diff --git a/src/Exception/Client/ActivityResetException.php b/src/Exception/Client/ActivityResetException.php new file mode 100644 index 00000000..d2b913aa --- /dev/null +++ b/src/Exception/Client/ActivityResetException.php @@ -0,0 +1,20 @@ +cancellationDetails ??= new ActivityCancellationDetails( cancelRequested: $cancelled, paused: $paused, + reset: $reset, ); - throw $cancelled - ? ActivityCanceledException::fromActivityInfo($this->info) - : ActivityPausedException::fromActivityInfo($this->info); + throw match (true) { + $cancelled => ActivityCanceledException::fromActivityInfo($this->info), + $paused => ActivityPausedException::fromActivityInfo($this->info), + $reset => ActivityResetException::fromActivityInfo($this->info), + }; } } catch (ServiceClientException $e) { throw ActivityCompletionException::fromActivityInfo($this->info, $e);