… | |
… | |
104 | use common::sense; |
104 | use common::sense; |
105 | |
105 | |
106 | use overload (); |
106 | use overload (); |
107 | |
107 | |
108 | use Carp (); |
108 | use Carp (); |
109 | use Time::HiRes (); |
|
|
110 | use Scalar::Util (); |
109 | use Scalar::Util (); |
111 | |
110 | |
112 | use Guard; |
111 | use Guard; |
113 | |
112 | |
114 | use AnyEvent (); |
113 | use AnyEvent (); |
… | |
… | |
137 | undef |
136 | undef |
138 | } |
137 | } |
139 | } |
138 | } |
140 | |
139 | |
141 | sub format_msg($$) { |
140 | sub format_msg($$) { |
142 | my ($time, $micro) = Time::HiRes::gettimeofday; |
141 | my ($time, $micro) = Coro::Util::gettimeofday; |
143 | my ($sec, $min, $hour, $day, $mon, $year) = gmtime $time; |
142 | my ($sec, $min, $hour, $day, $mon, $year) = gmtime $time; |
144 | my $date = sprintf "%04d-%02d-%02dZ%02d:%02d:%02d.%04d", |
143 | my $date = sprintf "%04d-%02d-%02dZ%02d:%02d:%02d.%04d", |
145 | $year + 1900, $mon + 1, $day, $hour, $min, $sec, $micro / 100; |
144 | $year + 1900, $mon + 1, $day, $hour, $min, $sec, $micro / 100; |
146 | sprintf "%s (%d) %s", $date, $_[0], $_[1] |
145 | sprintf "%s (%d) %s", $date, $_[0], $_[1] |
147 | } |
146 | } |
… | |
… | |
394 | my $cmd = $1; |
393 | my $cmd = $1; |
395 | my $sub = eval "sub { $cmd }"; |
394 | my $sub = eval "sub { $cmd }"; |
396 | my $fh = select; |
395 | my $fh = select; |
397 | Coro::async_pool { |
396 | Coro::async_pool { |
398 | $Coro::current->{desc} = $cmd; |
397 | $Coro::current->{desc} = $cmd; |
399 | my $t = Time::HiRes::time; |
398 | my $t = Coro::Util::time; |
400 | my @res = eval { &$sub }; |
399 | my @res = eval { &$sub }; |
401 | $t = Time::HiRes::time - $t; |
400 | $t = Coro::Util::time - $t; |
402 | print {$fh} |
401 | print {$fh} |
403 | "\rcommand: $cmd\n", |
402 | "\rcommand: $cmd\n", |
404 | "execution time: $t\n", |
403 | "execution time: $t\n", |
405 | "result: ", $@ ? $@ : (join " ", @res) . "\n", |
404 | "result: ", $@ ? $@ : (join " ", @res) . "\n", |
406 | "> "; |
405 | "> "; |