X-Git-Url: http://git.indexdata.com/?p=simpleserver-moved-to-github.git;a=blobdiff_plain;f=SimpleServer.pm;h=b2088b4756bd4ed12b61fd59a4fcd6373421413e;hp=05d90f7a5e190b5c726c3ffeff9dbbf0621985a0;hb=0d2c0f1cdeaec0675cbd0d2463858ecf834effec;hpb=708152cf4f979d8dd5ef53f5c1636e29e1af4f5d diff --git a/SimpleServer.pm b/SimpleServer.pm index 05d90f7..b2088b4 100644 --- a/SimpleServer.pm +++ b/SimpleServer.pm @@ -1,31 +1,28 @@ +## This file is part of simpleserver +## Copyright (C) 2000-2013 Index Data. +## All rights reserved. +## Redistribution and use in source and binary forms, with or without +## modification, are permitted provided that the following conditions are met: ## -## Copyright (c) 2000-2006, Index Data. +## * Redistributions of source code must retain the above copyright +## notice, this list of conditions and the following disclaimer. +## * Redistributions in binary form must reproduce the above copyright +## notice, this list of conditions and the following disclaimer in the +## documentation and/or other materials provided with the distribution. +## * Neither the name of Index Data nor the names of its contributors +## may be used to endorse or promote products derived from this +## software without specific prior written permission. ## -## Permission to use, copy, modify, distribute, and sell this software and -## its documentation, in whole or in part, for any purpose, is hereby granted, -## provided that: -## -## 1. This copyright and permission notice appear in all copies of the -## software and its documentation. Notices of copyright or attribution -## which appear at the beginning of any file must remain unchanged. -## -## 2. The name of Index Data or the individual authors may not be used to -## endorse or promote products derived from this software without specific -## prior written permission. -## -## THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND, -## EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY -## WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE. -## IN NO EVENT SHALL INDEX DATA BE LIABLE FOR ANY SPECIAL, INCIDENTAL, -## INDIRECT OR CONSEQUENTIAL DAMAGES OF ANY KIND, OR ANY DAMAGES -## WHATSOEVER RESULTING FROM LOSS OF USE, DATA OR PROFITS, WHETHER OR -## NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND ON ANY THEORY OF -## LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE USE OR PERFORMANCE -## OF THIS SOFTWARE. -## -## - -## $Id: SimpleServer.pm,v 1.50 2010-02-04 16:30:40 mike Exp $ +## THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY +## EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED +## WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE +## DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY +## DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES +## (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; +## LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND +## ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT +## (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF +## THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. package Net::Z3950::SimpleServer; @@ -39,7 +36,7 @@ require AutoLoader; @ISA = qw(Exporter AutoLoader DynaLoader); @EXPORT = qw( ); -$VERSION = '1.13'; +$VERSION = '1.15'; bootstrap Net::Z3950::SimpleServer $VERSION; @@ -99,7 +96,9 @@ sub launch_server { if (defined($self->{DELETE})) { set_delete_handler($self->{DELETE}); } - + if (defined($self->{START})) { + set_start_handler($self->{START}); + } start_server(@args); } @@ -121,6 +120,10 @@ package Net::Z3950::RPN::RSID; our @ISA = qw(Net::Z3950::RPN::Node); package Net::Z3950::RPN::Attributes; package Net::Z3950::RPN::Attribute; +package Net::Z3950::FacetList; +package Net::Z3950::FacetField; +package Net::Z3950::FacetTerms; +package Net::Z3950::FacetTerm; # Utility method for re-rendering Type-1 query back down to PQF @@ -241,6 +244,7 @@ environments) whenever a new connection is received. The programmer can specify subroutines to take care of the following type of events: + - Start service (called once). - Initialize request - Search request - Present request @@ -263,6 +267,7 @@ The Perl programmer specifies the event handlers for the server by means of the SimpleServer object constructor my $z = new Net::Z3950::SimpleServer( + START => \&my_start_handler, INIT => \&my_init_handler, CLOSE => \&my_close_handler, SEARCH => \&my_search_handler, @@ -306,6 +311,23 @@ application invocation: In particular, you need to use the -T switch to start your SimpleServer in threaded mode. +=head2 Start handler + +The start handler is called when service is started. The argument hash +passed to the start handler has the form + + $args = { + CONFIG => "default-config" ## GFS config (as given by -c) + }; + + +The purpose of the start handler is to read the configuration file +for the Generic Frontend Server . This is specified by option -c. +If -c is omitted, the configuration file is set to "default-config". + +The start handler is optional. It is supported in Simpleserver 1.16 and +later. + =head2 Init handler The init handler is called whenever a Z39.50 client is attempting @@ -888,7 +910,7 @@ Mike Taylor (indexdata.com). =head1 COPYRIGHT AND LICENCE -Copyright (C) 2000-2009 by Index Data. +Copyright (C) 2000-2013 by Index Data. This library is free software; you can redistribute it and/or modify it under the same terms as Perl itself, either Perl version 5.8.4 or,