… | |
… | |
132 | my ($queue, $cmd) = @_; |
132 | my ($queue, $cmd) = @_; |
133 | |
133 | |
134 | push @{ $queue->[2] }, pack "N/a", $cmd; |
134 | push @{ $queue->[2] }, pack "N/a", $cmd; |
135 | |
135 | |
136 | $queue->[3] ||= AE::io $queue->[1], 1, sub { |
136 | $queue->[3] ||= AE::io $queue->[1], 1, sub { |
137 | warn "oopl0 ", scalar @{ $queue->[2] }; |
|
|
138 | if (ref $queue->[2][0]) { |
137 | if (ref $queue->[2][0]) { |
139 | warn "oopla2\n";#d# |
|
|
140 | AnyEvent::ProcessPool::Util::fd_send fileno $queue->[1], fileno ${ $queue->[2][0] } |
138 | AnyEvent::ProcessPool::Util::fd_send fileno $queue->[1], fileno ${ $queue->[2][0] } |
141 | and shift @{ $queue->[2] }; |
139 | and shift @{ $queue->[2] }; |
142 | } else { |
140 | } else { |
143 | warn "write ", length $queue->[2][0];#d# |
|
|
144 | my $len = syswrite $queue->[1], $queue->[2][0] |
141 | my $len = syswrite $queue->[1], $queue->[2][0] |
145 | or die "AnyEvent::ProcessPool::queue write failure: $!"; |
142 | or do { undef $queue->[3]; die "AnyEvent::ProcessPool::queue write failure: $!" }; |
146 | substr $queue->[2][0], 0, $len, ""; |
143 | substr $queue->[2][0], 0, $len, ""; |
147 | shift @{ $queue->[2] } unless length $queue->[2][0]; |
144 | shift @{ $queue->[2] } unless length $queue->[2][0]; |
148 | } |
145 | } |
149 | |
146 | |
150 | undef $queue->[3] unless @{ $queue->[2] }; |
147 | undef $queue->[3] unless @{ $queue->[2] }; |
151 | warn "oopl3 ", scalar @{ $queue->[2] }; |
|
|
152 | warn "oopl4 $queue->[3]\n";#d# |
|
|
153 | }; |
148 | }; |
154 | } |
149 | } |
155 | |
150 | |
156 | sub run_template { |
151 | sub run_template { |
157 | return if $template; |
152 | return if $template; |
… | |
… | |
177 | |
172 | |
178 | queue_cmd $template, "Iabc"; |
173 | queue_cmd $template, "Iabc"; |
179 | push @{ $template->[2] }, \$b; |
174 | push @{ $template->[2] }, \$b; |
180 | |
175 | |
181 | use Coro::AnyEvent; Coro::AnyEvent::sleep 1; |
176 | use Coro::AnyEvent; Coro::AnyEvent::sleep 1; |
|
|
177 | undef $b; |
|
|
178 | die "x" . <$a>; |
182 | } |
179 | } |
183 | |
180 | |
184 | sub new { |
181 | sub new { |
185 | my $class = shift; |
182 | my $class = shift; |
186 | |
183 | |