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

NAME

DiaColloDB::WWW::Server - diachronic collocation db, www wrappers: rudimentary standalone http server

SYNOPSIS

 ##========================================================================
 ## PRELIMINARIES
 
 use DiaColloDB::WWW::Server;
 
 ##========================================================================
 ## Constructors etc.
 
 $srv = $CLASS_OR_OBJECT->new(%args);
 
 ##========================================================================
 ## Methods: Generic Server API
 
 $rc = $srv->prepare();
 $rc = $srv->prepareSignalHandlers();
 $rc = $srv->prepareLocal(@args_to_prepare);
 $rc = $srv->run();
 $rc = $srv->finish();
 
 ##========================================================================
 ## Methods: Local: spawn and reap
 
 \&reaper = $srv->reaper();
 undef = $srv->reapClient($csock, $handler_or_undef, $chost_or_undef);
 
 ##========================================================================
 ## Methods: Local: path handlers
 
 $handler = $srv->getPathHandler($hreq_uri);
 $type_or_undef = $srv->mimetype($filename);
 $sub = $srv->handle_ttk($uri_path,$ttk_path);
 $sub = $srv->handle_raw($file_path);
 
 ##========================================================================
 ## Methods: Local: error handling
 
 undef = $srv->clientError($clientSock,$status,@message);
 

DESCRIPTION

DiaColloDB::WWW::Server implements a rudimentary standalone HTTP server providing a simple web-service API and user interface for local DiaColloDB diachronic collocation index directories, including various online visualization modes. See dcdb-www-server.perl(1) for the top-level script.

Globals

Variable: @ISA

DiaColloDB::WWW::Server inherits from DiaColloDB::Logger.

Constructors etc.

new
 $srv = $that->new(%args);

%args, %$srv:

 ##-- user data (REQUIRED)
 wwwdir     => $wwwdir,        ##-- root directory for www wrapper data (default=File::ShareDir::dist_dir("DiaColloDB-WWW")."/htdocs"
 dbdir      => $dbdir,         ##-- local DiaColloDB index directory
 ##
 ##-- underlying HTTP::Daemon server
 daemonMode => $daemonMode,    ##-- one of 'serial' or 'fork' [default='serial']
 daemonArgs => \%daemonArgs,   ##-- args to HTTP::Daemon->new(); default={LocalAddr=>'0.0.0.0',LocalPort=>6066}
 daemon     => $daemon,        ##-- underlying HTTP::Daemon object
 cgi        => $dbcgi,         ##-- DiaColloDB::WWW::CGI object for handling CGI requests
 cgiArgs    => \%cgiArgs,      ##-- args to DiaColloDB::WWW::CGI->new(); default=none
 mimetypes  => $mt,            ##-- a MIME::Types object for guessing mime types
 ##
 ##-- logging
 logAttempt => $level,        ##-- log connection attempts at $level (default='trace')
 logConnect => $level,        ##-- log successful connections (client IP and requested path) at $level (default='debug')
 logRquestData => $level,     ##-- log full client request data at $level (default='trace')
 logResponse => $level,       ##-- log full client response at $level (default='trace')
 logClientError => $level,    ##-- log errors to client at $level (default='debug')
 logClose => $level,          ##-- log close client connections (default='trace')

Methods: Generic Server API

prepare
 $rc = $srv->prepare();

Prepare static server data prior to running; default implementation initializes logger.

prepareSignalHandlers
 $rc = $srv->prepareSignalHandlers();

initialize signal handlers (really only interesting for threaded servers).

prepareLocal
 $rc = $srv->prepareLocal(@args_to_prepare);

subclass-local initialization, called by prepare() after default prepare() guts have run.

run
 $rc = $srv->run();

runs the actual main server loop; never returns in the usual case.

finish
 $rc = $srv->finish();

cleanup method; should be called when server dies or after run() has completed.

Methods: Local: spawn and reap

reaper
 \&reaper = $srv->reaper();

zombie-harvesting code; installed to local %SIG

reapClient
 undef = $srv->reapClient($csock, $handler_or_undef, $chost_or_undef);

closes down the connection to client $csock, calls $handler->finish() to shutdown the handler if defined.

Methods: Local: path handlers

getPathHandler
 $handler = $srv->getPathHandler($hreq_uri);

returns a DiaColloDB::WWW::Handler object for handling the request URI $hreq_uri.

mimetype
 $type_or_undef = $srv->mimetype($filename);

Gets and returns the stringified MIME-type for $filename via MIME::Types::mimeTypeOf().

Methods: Local: error handling

clientError
 undef = $srv->clientError($clientSock,$status,@message);

sends an error message to the client and closes it down; $status defaults to HTTP::Status::RC_INTERNAL_SERVER_ERROR.

AUTHOR

Bryan Jurish <moocow@cpan.org>

COPYRIGHT AND LICENSE

Copyright (C) 2016 by Bryan Jurish

This package is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.14.2 or, at your option, any later version of Perl 5 you may have available.

SEE ALSO

DiaColloDB::WWW::Handler(3pm), DiaColloDB(3pm), perl(1), ...