Replay a small response state machine with scalar request and response values.

response state Model a response as scalar state before handing it to a real service boundary.

Response State Panel

route
response_state_panel.pl
Replay: real traced execution (multi-file project)
use strict;
use warnings;

my $route = "status";
my $status = "";
my $message = "";

if ($route eq "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elsif ($route eq "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

my $payload = $status . ":" . $message;

print "route=$route\n";
print "status=$status\n";
print "payload=$payload\n";
use strict;
use warnings;

my $route = "refresh";
my $status = "";
my $message = "";

if ($route eq "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elsif ($route eq "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

my $payload = $status . ":" . $message;

print "route=$route\n";
print "status=$status\n";
print "payload=$payload\n";
use strict;
use warnings;

my $route = "archive";
my $status = "";
my $message = "";

if ($route eq "refresh") {
    $status = "ok";
    $message = "cache refreshed";
} elsif ($route eq "archive") {
    $status = "queued";
    $message = "archive queued";
} else {
    $status = "ok";
    $message = "service ready";
}

my $payload = $status . ":" . $message;

print "route=$route\n";
print "status=$status\n";
print "payload=$payload\n";
  1. $route ← status, $status ← (empty), $message ← (empty)

    4my $route→ status = "status"; #@route="refresh", "archive"5my $status→ (empty) = "";6my $message→ (empty) = "";
  2. $status ← ok, $message ← service ready

    13    $message = "archive queued";14} else {15    $status→ ok = "ok";16    $message→ service ready = "service ready";17}
  3. $payload ← ok:service ready

    19my $payload→ ok:service ready = $statusok . ":" . $messageservice ready;2021print "route=$routestatus\n";22print "status=$statusok\n";23print "payload=$payloadok:service ready\n";
    outputroute=status
    status=ok
    payload=ok:service ready
  1. $route ← refresh, $status ← (empty), $message ← (empty)

    4my $route→ refresh = "refresh";5my $status→ (empty) = "";6my $message→ (empty) = "";
  2. $status ← ok, $message ← cache refreshed

    8if ($routerefresh eq "refresh") {9    $status→ ok = "ok";10    $message→ cache refreshed = "cache refreshed";11} elsif ($route eq "archive") {
  3. $payload ← ok:cache refreshed

    19my $payload→ ok:cache refreshed = $statusok . ":" . $messagecache refreshed;2021print "route=$routerefresh\n";22print "status=$statusok\n";23print "payload=$payloadok:cache refreshed\n";
    outputroute=refresh
    status=ok
    payload=ok:cache refreshed
  1. $route ← archive, $status ← (empty), $message ← (empty)

    4my $route→ archive = "archive";5my $status→ (empty) = "";6my $message→ (empty) = "";
  2. $status ← queued, $message ← archive queued

    10    $message = "cache refreshed";11} elsif ($routearchive eq "archive") {12    $status→ queued = "queued";13    $message→ archive queued = "archive queued";14} else {
  3. $payload ← queued:archive queued

    19my $payload→ queued:archive queued = $statusqueued . ":" . $messagearchive queued;2021print "route=$routearchive\n";22print "status=$statusqueued\n";23print "payload=$payloadqueued:archive queued\n";
    outputroute=archive
    status=queued
    payload=queued:archive queued