ViewVC Help
View File | Revision Log | Show Annotations | Download File
/cvs/AnyEvent-MP/MP/Kernel.pm
(Generate patch)

Comparing AnyEvent-MP/MP/Kernel.pm (file contents):
Revision 1.15 by root, Sat Aug 15 04:34:34 2009 UTC vs.
Revision 1.16 by root, Sat Aug 15 15:08:07 2009 UTC

22=cut 22=cut
23 23
24package AnyEvent::MP::Kernel; 24package AnyEvent::MP::Kernel;
25 25
26use common::sense; 26use common::sense;
27use POSIX ();
27use Carp (); 28use Carp ();
28use MIME::Base64 (); 29use MIME::Base64 ();
29 30
30use AE (); 31use AE ();
31 32
48 49
49our $CONNECT_INTERVAL = 2; # new connect every 2s, at least 50our $CONNECT_INTERVAL = 2; # new connect every 2s, at least
50our $NETWORK_LATENCY = 3; # activity timeout 51our $NETWORK_LATENCY = 3; # activity timeout
51our $MONITOR_TIMEOUT = 15; # fail monitoring after this time 52our $MONITOR_TIMEOUT = 15; # fail monitoring after this time
52 53
53=item $AnyEvent::MP::Kernel::WARN 54=item $AnyEvent::MP::Kernel::WARN->($level, $msg)
54 55
55This value is called with an error or warning message, when e.g. a connection 56This value is called with an error or warning message, when e.g. a connection
56could not be created, authorisation failed and so on. 57could not be created, authorisation failed and so on.
57 58
59C<$level> sould be C<0> for messages ot be logged always, C<1> for
60unexpected messages and errors, C<2> for warnings, C<7> for messages about
61node connectivity and services, C<8> for debugging messages and C<9> for
62tracing messages.
63
58The default simply logs the message to STDERR. 64The default simply logs the message to STDERR.
59 65
60=cut 66=cut
61 67
62our $WARN = sub { 68our $WARN = sub {
63 my $msg = $_[0]; 69 my ($level, $msg) = @_;
70
64 $msg =~ s/\n$//; 71 $msg =~ s/\n$//;
65 warn "$msg\n"; 72
73 printf STDERR "%s <%d> %s\n",
74 (POSIX::strftime "%Y-%m-%d %H:%M:%S", localtime time),
75 $level,
76 $msg;
66}; 77};
67 78
68sub load_func($) { 79sub load_func($) {
69 my $func = $_[0]; 80 my $func = $_[0];
70 81
461 472
462 wantarray && AnyEvent::Util::guard { delete $MON_NODES{$cb+0} } 473 wantarray && AnyEvent::Util::guard { delete $MON_NODES{$cb+0} }
463} 474}
464 475
465sub _inject_nodeevent($$;@) { 476sub _inject_nodeevent($$;@) {
466 my ($node, @args) = @_; 477 my ($node, $up, @reason) = @_;
467
468 unshift @args, $node->{noderef};
469 478
470 for my $cb (values %MON_NODES) { 479 for my $cb (values %MON_NODES) {
471 eval { $cb->(@args); 1 } 480 eval { $cb->($node->{noderef}, $up, @reason); 1 }
472 or $WARN->($@); 481 or $WARN->(1, $@);
473 } 482 }
483
484 $WARN->(7, "$node->{noderef} is " . ($up ? "up" : "down") . " (@reason)");
474} 485}
475 486
476############################################################################# 487#############################################################################
477# self node code 488# self node code
478 489
547 558
548$NODE{""} = $NODE{$NODE} = new AnyEvent::MP::Node::Self noderef => $NODE; 559$NODE{""} = $NODE{$NODE} = new AnyEvent::MP::Node::Self noderef => $NODE;
549$PORT{""} = sub { 560$PORT{""} = sub {
550 my $tag = shift; 561 my $tag = shift;
551 eval { &{ $node_req{$tag} ||= load_func $tag } }; 562 eval { &{ $node_req{$tag} ||= load_func $tag } };
552 $WARN->("error processing node message: $@") if $@; 563 $WARN->(2, "error processing node message: $@") if $@;
553}; 564};
554 565
555=back 566=back
556 567
557=head1 SEE ALSO 568=head1 SEE ALSO

Diff Legend

Removed lines
+ Added lines
< Changed lines
> Changed lines