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
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.
SEE ALSO
http://en.wikipedia.org/wiki/Inetd
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.