NAME
RPC::Serialized::Server::NetServer - Run an RPC server using Net::Server
SYNOPSIS
use RPC::Serialized::Server::NetServer;
my $s = RPC::Serialized::Server::NetServer->new({
net_server => { port => 1234 },
});
# note that $s isa Net::Server::PreFork, not an RPC::Serialized
s->run;
# server process is now looping and waiting for RPC (like Apache prefork)
# the default port number for Net::Server is 20203
# alternatively, if you have an external configuration file which
# Config::Any can load, try the following:
$s = RPC::Serialized::Server::NetServer->new('/path/to/config/file');
# you can also combine config file and hash reference arguments
DESCRIPTION
This module provides a bridge between RPC::Serialized and Net::Server, meaning you can easily run an RPC server without installing any additional daemonizing tools onto your system. The module sets up a basic PreFork server, which runs much like Apache in PreFork mode, and you can override any of the default configuration to Net::Server
.
It is strongly recommended that you at least once read through the Net::Server manual page and the Net::Server::PreFork manual page, to familiarize yourself with the configuration options. You do not need to worry much about the client connection processing or hooks, because that is dealt with inside of this module.
CONFIGURATION
Most of the defaults for Net::Server
have been left alone, because they are reasonably sane and easy to override using the syntax shown in "SYOPSIS", above. Here are the non-standard settings:
log_level
is set to4
-
This means you get a little more detail from the parent
Net::Server
process about its child handlers, for instance when they are started. syslog_facility
is set tolocal1
-
This is merely so that logging messages from this application are available separately to your other standard system logs. Most good Syslog daemons (e.g.
syslog-ng
can flexibly handle each facility.
Things you might want to configure
By default the server will remain in the foregrount, and not fork or detach from its parent process to become a daemon. Check the background
and setsid
options if you would like a proper background daemon running.
The logging output will go to STDERR, so to change this set the log_file
option. The Net::Server
manual page describes the values available.
For performance tweaking, you might want to alter some of the Net::Server::PreFork
settings. Again, see the manual page for that module for further details.
RUNNING THE SERVER
Once you have instantiated a new server object using new()
, there is just one method call to make to begin the processing loop:
$s->run;
This will fork the child handlers, and begin running as a server. Note that this is a method on the Net::Server
object and not RPC::Serialized
; it wraps the process()
call normally issued to that module in other servers.
AUTHOR
Oliver Gorwits <oliver.gorwits@oucs.ox.ac.uk>
This module is a derivative of YAML::RPC
, written by pod
and Ray Miller, at the University of Oxford Computing Services. Without their brilliant creation this system would not exist.
COPYRIGHT & LICENSE
Copyright (c) The University of Oxford 2007. All Rights Reserved.
This program is free software; you can redistribute it and/or modify it under the terms of version 2 of the GNU General Public License as published by the Free Software Foundation.
This program is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU General Public License for more details.
You should have received a copy of the GNU General Public License along with this program; if not, write to the Free Software Foundation, Inc., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA