X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=SimpleServer.pm;h=c4b5c9636490051b7fea1d6de0c33ea9a88f585d;hb=9e711749cfb43040e09c3af3f6892603941e9285;hp=cc6c7d00081111116ad453d3e8e60000b3d7f1e9;hpb=03aac9fd7958d065157b3c5878bf5a7c76420a0f;p=simpleserver-moved-to-github.git diff --git a/SimpleServer.pm b/SimpleServer.pm index cc6c7d0..c4b5c96 100644 --- a/SimpleServer.pm +++ b/SimpleServer.pm @@ -26,7 +26,24 @@ ## ## $Log: SimpleServer.pm,v $ -## Revision 1.8 2001-08-29 10:29:51 sondberg +## Revision 1.12 2002-03-05 20:52:22 sondberg +## Version 0.05 so that we can release the thing at CPAN. +## +## Revision 1.11 2002/03/05 20:49:56 sondberg +## Added a couple of lines of documentation. +## +## Revision 1.10 2002/02/28 11:21:57 mike +## Add RPN structure to search-handler argument hash. +## +## Revision 1.9 2001/08/29 11:48:36 sondberg +## Added routines +## +## Net::Z3950::SimpleServer::ScanSuccess +## Net::Z3950::SimpleServer::ScanPartial +## +## and a bit of documentation. +## +## Revision 1.8 2001/08/29 10:29:51 sondberg ## Added some documentation of scan. ## ## Revision 1.7 2001/08/24 14:00:20 sondberg @@ -53,7 +70,7 @@ require AutoLoader; @EXPORT = qw( ); -$VERSION = '0.02'; +$VERSION = '0.05'; bootstrap Net::Z3950::SimpleServer $VERSION; @@ -102,6 +119,20 @@ sub launch_server { } +# Register packages that we will use in translated RPNs +package Net::Z3950::APDU::Query; +package Net::Z3950::APDU::OID; +package Net::Z3950::RPN::And; +package Net::Z3950::RPN::Or; +package Net::Z3950::RPN::AndNot; +package Net::Z3950::RPN::Term; +package Net::Z3950::RPN::Attributes; +package Net::Z3950::RPN::Attribute; + +# Must revert to original package for Autoloader's benefit +package Net::Z3950::SimpleServer; + + # Autoload methods go after =cut, and are processed by the autosplit program. 1; @@ -271,6 +302,8 @@ mous hash. The structure is the following: DATABASES => ["xxx"], ## Reference to a list of data- ## bases to search QUERY => "query", ## The query expression + RPN => $obj, ## Blessed reference int the package + ## Net::Z3950::APDU::Query ## Response parameters: @@ -315,6 +348,11 @@ it is perfectly legal to not accept boolean operators, but you SHOULD try to return good error codes if you run into something you can't or won't support. +The RPN member is a blessed reference into the package Net::Z3950::APDU::Query. +By means of an augmented type of coding, you can easily construct a +parser of the incoming RPN. Take a look at samples/render-search.pl for +a sample implementation of such an augmented parser technique. + =head2 Present handler The presence of a present handler in a SimpleServer front-end is optional. @@ -424,7 +462,7 @@ an index of a book, you always find something! The parameters exchanged are ERR_CODE => 0, ## Error code ERR_STR => '', ## Diagnostic message NUMBER => zz, ## Number of returned terms - STATUS => ScanSuccess, ## ScanSuccess/ScanFailure + STATUS => $status, ## ScanSuccess/ScanFailure ENTRIES => $entries ## Referenced list of terms }; @@ -445,7 +483,14 @@ should point at a data structure of this kind, ... ]; - + +The $status flag should be assigned one of two values: + + Net::Z3950::SimpleServer::ScanSuccess On success (default) + Net::Z3950::SimpleServer::ScanPartial Less terms returned than requested + +The STEP member contains the requested number of entries in the term-list +between two adjacent entries in the response. =head2 Close handler @@ -463,7 +508,7 @@ or something similar, this is the place to do it. =head1 AUTHORS Anders Sønderberg (sondberg@indexdata.dk) and Sebastian Hammer -(quinn@indexdata.dk). +(quinn@indexdata.dk). Substantial contributions made by Mike Taylor (mike@tecc.co.uk). =head1 SEE ALSO