package DX::ResultStream;
+use DX::Result;
use Moo;
has for_state => (is => 'ro', required => 1);
last if $state->isa('DX::State');
if ($state->isa('DX::ObservationRequired')) {
if ($self->observation_policy->($state->observer)) {
- my ($type, $value) = $state->observer->run;
+ my @ob = $state->observer->run;
$state = $state->resume;
- $state->facts->{$type}->set_value($value);
+ while (my ($type, $value) = splice(@ob, 0, 2)) {
+ $state->facts->{$type}->set_value($value);
+ }
} else {
die "Observation refused";
}
$self->_set_is_exhausted(1);
return;
}
- return +{
- map +($_ => $state->scope_var($_)->copy), keys %{$state->scope}
- };
+ return DX::Result->new(state => $state->copy_vars);
}
sub results {