The Perl Toolchain Summit needs more sponsors. If your company depends on Perl, please support this very important event.

NAME

RPC::Serialized::Server::NetServer::Single - Run a single-instance RPC server using Net::Server

VERSION

version 1.123630

SYNOPSIS

 use RPC::Serialized::Server::NetServer::Single;
 
 my $s = RPC::Serialized::Server::NetServer->new({
     net_server => { port => 1234 },
 });
 
 # note that $s isa Net::Server::Single, not an RPC::Serialized

 s->run;
     # server process is now looping and waiting for RPC
     # 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::Single->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 single process server which will service requests serially. This can be very useful for tesing or debugging situations.

This personality is based on a TCP listening socket. If you want a single process server which listens on Standard Input/Output, see RPC::Serialized::Server::STDIO.

It is strongly recommended that you at least once read through the Net::Server 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 to 4

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 to local1

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 foreground, 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.

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 bind to the TCP port 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.

THANKS

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.

AUTHOR

Oliver Gorwits <oliver@cpan.org>

COPYRIGHT AND LICENSE

This software is copyright (c) 2012 by University of Oxford.

This is free software; you can redistribute it and/or modify it under the same terms as the Perl 5 programming language system itself.