NAME Perinci::Access::TCP::Server - A Riap::TCP implementation for Perl VERSION version 0.03 SYNOPSIS #!/usr/bin/perl use Perinci::Access::TCP::Server; my $server = Perinci::Access::TCP::Server->new( ports => ['127.0.0.1:5678'], # default none unix_sockets => ['/var/run/riap-tcp.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-tcpserve script: % peri-tcpserve -p 127.0.0.1:5678 -s /path/to/unix/sock Foo::Bar Baz::* DESCRIPTION This module implements Riap::TCP. Its features preforking, multiple interface and Unix sockets. This module uses Log::Any for logging. This module uses Moo for object system. ATTRIBUTES name => STR (default is basename of $0) Name of server, for display in process table ('ps ax'). daemonize => BOOL (default 0) Whether to daemonize (go into background). ports => ARRAY OF STR (default []) 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). unix_sockets => ARRAY OF STR (default []) 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. timeout => BOOL (default 120) Socket timeout. Will be passed to IO::Socket. require_root => BOOL (default 0) Whether to require running as root. Passed to SHARYANTO::Proc::Daemon::Prefork's constructor. pid_path => STR (default /var/run/.pid or ~/.pid) Location of PID file. scoreboard_path => STR (default /var/run/.scoreboard or ~/.scoreboard) 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'). error_log_path => STR (default /var/log/-error.log or ~/-error.log) Location of error log. Default is /var/log/-error.log. It will be opened in append mode. access_log_path => STR (default /var/log/-access.log or ~/-access.log) Location of access log. It will be opened in append mode. start_servers => INT (default 3) 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. max_clients => INT (default 150) 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. max_requests_per_child => INT (default 1000) Number of requests each child will serve until it exists. METHODS $server = Perinci::Access::TCP::Server->new(%args) Create a new instance of server. %args can be used to set attributes. $server->run() Run server. $server->start() Alias for run(). $server->stop() Stop running server. $server->restart() Restart server. $server->is_running() => BOOL Check whether server is running. $server->before_prefork() 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). $server->access_log($sock) Write access log entry. SEE ALSO Riap::TCP, Riap, Rinci peri-tcpserve, simple command-line interface for this module. AUTHOR Steven Haryanto COPYRIGHT AND LICENSE 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.