The London Perl and Raku Workshop takes place on 26th Oct 2024. If your company depends on Perl, please consider sponsoring and/or attending.

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.