NAME
POE::Component::Server::BigBrother - POE Component that implements
BigBrother daemon functionality
SYNOPSIS
use strict;
use POE;
use POE::Component::Server::BigBrother;
POE::Component::Server::BigBrother->spawn(
alias => 'BigBrother_Server',
msg_max_size => 8192,
);
POE::Session->create(
package_states => [
'main' => { 'bb_status' => '_message' },
'main' => [ qw ( _start ) ] ],
);
$poe_kernel->run();
exit 0;
sub _start {
# Our session starts, register to receive all events from poco-BigBrother
$poe_kernel->post ( 'BigBrother_Server', 'register', qw( all ) );
return;
}
sub _message {
my ($sender, $message, $bb_server) = @_[SENDER, ARG0, ARG1];
print $message->{command}," message from ",$message->{host_name},$/;
}
DESCRIPTION
POE::Component::Server::BigBrother is a POE component that implements
"BigBrother daemon" functionality. This is the daemon program that
accepts service check information from remote machines.
The component implements the network handling of accepting service check
information from multiple clients.
It is based in part on code shamelessly borrowed from
POE::Component::IRC
CONSTRUCTOR
spawn
Optional parameters:
'alias', set an alias on the component;
'bind_addr', specify an address to listen on, default is INADDR_ANY;
'bind_port', specify a port to listen on, default is 1984;
'time_out', specify a time out in seconds for socket connections, default is 30;
'max_msg_size', specify the max size for a message, default is 16384;
Returns a POE::Component::Server::BigBrother object.
METHODS
session_id
Takes no arguments. Returns the POE::Session ID of the component.
Ideal for posting events to the component.
shutdown
Terminates the component. Shuts down the listener and unregisters
registered sessions.
INPUT EVENTS
These are events from other POE sessions that our component will handle:
"register"
This will register the sending session. Takes N arguments: a list of
event names that your session wants to listen for, minus the 'bb_'
prefix. So, for instance, if you just want a program that keeps
track of status messages, you'll need to listen for status. You'd
tell POE::Component::Server::BigBrother that you want those events
by saying this:
$poe_kernel->post ( 'BigBrother_Server', 'register', qw( status ) );
Registering for 'all' will cause it to send all BigBrother-related
events to you; this is the easiest way to handle it.
The component will increment the refcount of the calling session to
make sure it hangs around for events. Therefore, you should use
either "unregister" or "shutdown" to terminate registered sessions.
"unregister"
Takes N arguments: a list of event names which you *don't* want to
receive. If you've previously done a "register" for a particular
event which you no longer care about, this event will tell the
BigBrother connection to stop sending them to you. (If you haven't,
it just ignores you..)
If you have registered with 'all', attempting to unregister
individual events such as 'status', etc. will not work. This is a
'feature'.
"shutdown"
By default, POE::Component::Server::BigBrother sessions never go
away. If you send a shutdown event it's terminates the component,
shuts down the listener and unregisters registered sessions.
OUTPUT EVENTS
The events you will receive (or can ask to receive) from your running
BigBrother component. Note that all incoming event names your session
will receive are prefixed by 'bb_', to inhibit event namespace
pollution.
If you wish, you can ask the server to send you every event it
generates. Simply register for the event name 'all'. This is a lot
easier than writing a huge list of things you specifically want to
listen for.
In your event handlers, $_[SENDER] is the particular component session
that sent you the event.
"standard events"
All the standard events are sent with the following parameters:
ARG0
ARG0 will contain a hashref with the following key/values:
'command', the type of the message (eg: status, page, etc...);
'offset', the offset for the command;
'host_name', the hostname for which the message is applicable;
'probe', the name of the probe for which the message is applicable;
'color', the result color of the check (applicable only for status & page messages);
'data', datas associated with the message;
ARG1
ARG1 will contain the POE::Component::Server::BigBrother's object.
Useful if you want on-the-fly access to the object and its methods.
"bb_status"
This events are generated upon receipt of status messages.
"bb_page"
This events are generated upon receipt of page messages.
"bb_enable"
This events are generated upon receipt of enable messages.
"bb_disable"
This events are generated upon receipt of disable messages.
"bb_event"
This events are generated upon receipt of event messages.
AUTHOR
Yves Blusseau <yblusseau@cpan.org>
BUGS
Please report any bugs or feature requests to
"bug-POE-Component-Server-BigBrother at rt.cpan.org", or through the web
interface at
<http://rt.cpan.org/NoAuth/ReportBug.html?Queue=POE-Component-Server-Big
Brother>. I will be notified, and then you'll automatically be notified
of progress on your bug as I make changes.
COPYRIGHT & LICENSE
Copyright 2008-2009 Yves Blusseau. All rights reserved.
POE::Component::Server::BigBrother is free software; you may use,
redistribute, and/or modify it under the same terms as Perl itself.