NAME

Net::Analysis::Dispatcher - handle the event stuff for the proto analysers

SYNOPSIS

use Net::Analysis::Dispatcher;

my $d = Net::Analysis::Dispatcher->new();
my $listener = Net::Analysis::Listener::TCP->new();
$d->add_listener (listener => $listener);

DESCRIPTION

This class is used to register listener objects. Whenever any of the objects emit an event, the dispatcher is used to make sure other interested listeners receive the event.

new ()

Takes no arguments, tells no lies.

add_listener (listener => $obj, config => $hash)

This method adds a new listener to the list of things to be notified of each event.

If the listener object has a field pos, then we attempt to put the listener in that position in the event queue. Valid values are first and last, to receive events first and last. Listener::TCP likes to be first, since it adds extra info to the tcp_packet that other modules might like to see.

If a listener has already claimed the first or last spot, then we croak with an error.

emit_event (name => 'event_name', args => $hash)

The name must be a valid Perl function name. By convention, it should start with the name of the module that is emitting the event (e.g. http_transaction).

Where your code is emitting events, it must must document the args in detail, so that listeners will know what to do with them.

This method runs through the listener list, and if appropriate, invokes the listening method for each listener.

A listener gets the event if it has a method which has the same name as the event_name.

EXPORT

None by default.

SEE ALSO

Net::Analysis::Listener::Base

AUTHOR

Adam B. Worrall, <adam@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2004 by Adam B. Worrall

This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.5 or, at your option, any later version of Perl 5 you may have available.