
Perinci::Access::Simple::Server::Socket - Implement Riap::Simple server over sockets

version 0.12

#!/usr/bin/perl
use Perinci::Access::Simple::Server::Socket;
my $server = Perinci::Access::Simple::Server::Socket->new(
ports => ['127.0.0.1:5678'], # default none
unix_sockets => ['/var/run/riap-simple.sock'], # default none
#start_servers => 0, # default 3, 0=don't prefork
#max_clients => 0, # default 3, 0=don't prefork
#max_requests_per_child => 100, # default 1000
#daemonize => 1, # default 0
);
$server->run;
Or use using the included peri-sockserve script:
% peri-sockserve -p 127.0.0.1:5678 -s /path/to/unix/sock Foo::Bar Baz::*

This module implements Riap::Simple server over sockets. It features preforking, multiple interface and Unix sockets.
This module uses Log::Any for logging.
This module uses Moo for object system.

Name of server, for display in process table ('ps ax').
Whether to daemonize (go into background).
One or more TCP ports to listen to. Default is none. Each port can be in the form of N, ":N", "0.0.0.0:N" (all means the same thing, to bind to all interfaces) or "1.2.3.4:N" (to bind to a specific network interface).
A string is also accepted, it will be split (delimiter ,) beforehand.
Since server does not support any encryption, it is recommended to bind to localhost (127.0.0.1).
Location of Unix sockets. Default is none, which means not listening to Unix socket. Each element should be an absolute path.
A string is also accepted, it will be split (delimiter ,) beforehand.
You must at least specify one port or one Unix socket, or server will refuse to run.
Socket timeout. Will be passed to IO::Socket.
Whether to require running as root.
Passed to SHARYANTO::Proc::Daemon::Prefork's constructor.
Location of PID file.
Location of scoreboard file (used for communication between parent and child processes). If you disable this (by setting scoreboard_path => 0), autoadjusting number of children won't work (number of children will be kept at 'start_servers').
Location of error log. Default is /var/log/<name>-error.log. It will be opened in append mode.
Location of access log. It will be opened in append mode.
Number of children to fork at the start of run. If you set this to 0, the server becomes a nonforking one.
Tip: You can set start_servers to 0 and 'daemonize' to false for debugging.
Maximum number of children processes to maintain. If server is busy, number of children will be increased from the original 'start_servers' up until this value.
Number of requests each child will serve until it exists.

Create a new instance of server. %args can be used to set attributes.
Run server.
Alias for run().
Stop running server.
Restart server.
Check whether server is running.
This is a hook provided for subclasses to do something before the daemon is preforking. For example, you can preload Perl modules here so that each child doesn't have to load modules separately (= inefficient).
Write access log entry.

peri-sockserve, simple command-line interface for this module.
Perinci::Access::Simple::Client, Perinci::Access

Steven Haryanto <stevenharyanto@gmail.com>

This software is copyright (c) 2012 by Steven Haryanto.
This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.