NAME
POE::Component::Server::Inet - a super-server daemon implementation in
POE
VERSION
version 0.06
SYNOPSIS
use strict;
use warnings;
use POE qw(Component::Server::Inet);
$|=1;
my $inetd = POE::Component::Server::Inet->spawn( options => { trace => 0 } );
my $echo = $inetd->add_tcp( port => 0, program => \&_echo );
print "Started echo server on port: $echo\n";
my $fake = $inetd->add_tcp( port => 0, program => \&_fake );
print "Started a 'fake' server on $fake\n";
my $fake2 = $inetd->add_tcp( port => 0, program => \&_fake2 );
print "Started another 'fake' server on $fake2\n";
$poe_kernel->run();
exit 0;
sub _echo {
use FileHandle;
autoflush STDOUT 1;
while(<STDIN>) {
print STDOUT $_;
}
return;
}
sub _fake {
return;
}
sub _fake2 {
sleep 10000000000;
return;
}
DESCRIPTION
POE::Component::Server::Inet is an Inetd (
<http://en.wikipedia.org/wiki/Inetd> ) "super-server" implementation in
POE. It currently only supports TCP based connections.
You may either specify programs to run or use coderefs.
The component uses POE::Wheel::Run to do its magic.
CONSTRUCTOR
spawn
Starts a POE::Component::Server::Inet session and returns an object.
Takes a number of optional arguments:
'alias', an alias to address the component by;
'options', a hashref of POE::Session options;
'timeout', a number in seconds to wait before forcefully terminating forked processes, default 30;
METHODS
session_id
Takes no arguments. Returns the POE Session ID of the component.
add_tcp
Adds a TCP listener to the component. Takes a number of parameters:
'port', the port to listen on, mandatory ( can be set to 0 if required );
'program', a program or coderef to execute for each connection, mandatory;
'programargs', an arrayref of parameters for the program being run;
'allow', a Net::Netmask object of hosts to allow to connect;
'deny', a Net::Ntemask object of hosts to deny connections from;
'user', the UID of a user to switch to;
'group', the GID of a group to switch to;
Options "program", "programargs", "user" and "group" are passed
directly to POE::Wheel::Run's constructor, please check that
documentation for extra information.
The method call returns the port that was assigned.
del_tcp
Removes a TCP listener. Takes one mandatory parameter:
'port', the port to remove;
Any pending connections are dealt with.
shutdown
Terminates the component. All connections and wheels are closed.
SEE ALSO
POE
<http://en.wikipedia.org/wiki/Inetd>
POE::Wheel::Run
AUTHOR
Chris Williams <chris@bingosnet.co.uk>
COPYRIGHT AND LICENSE
This software is copyright (c) 2014 by Chris Williams.
This is free software; you can redistribute it and/or modify it under
the same terms as the Perl 5 programming language system itself.