NAME
POE::Component::Server::Inet - a super-server daemon implementation in POE
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 a 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
andgroup
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.
AUTHOR
Chris BinGOs
Williams <chris@bingosnet.co.uk>
LICENSE
Copyright (c)
Chris Williams
This module may be used, modified, and distributed under the same terms as Perl itself. Please see the license that came with your Perl distribution for details.