working remote module loading
[scpubgit/Tak.git] / lib / Tak / ModuleLoader.pm
1 package Tak::ModuleLoader;
2
3 use Moo;
4
5 has remote => (is => 'ro', required => 1);
6
7 sub inc_callback {
8   my ($self) = @_;
9   sub { return if our $In_Reentry; $self->maybe_load_module($_[1]) }
10 }
11
12 sub maybe_load_module {
13   my ($self, $module) = @_;
14   local our $In_Reentry = 1;
15   my ($status, $code) = $self->remote->blocking_request(source_for => $module);
16   if ($status eq 'RESULT') {
17     open my $fh, '<', \$code;
18     return $fh;
19   }
20   return;
21 }
22
23 1;