Version 0.05 so that we can release the thing at CPAN.
[simpleserver-moved-to-github.git] / SimpleServer.pm
index cc6c7d0..c4b5c96 100644 (file)
 ##
 
 ## $Log: SimpleServer.pm,v $
 ##
 
 ## $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
 ## Added some documentation of scan.
 ##
 ## Revision 1.7  2001/08/24 14:00:20  sondberg
@@ -53,7 +70,7 @@ require AutoLoader;
 @EXPORT = qw(
        
 );
 @EXPORT = qw(
        
 );
-$VERSION = '0.02';
+$VERSION = '0.05';
 
 bootstrap Net::Z3950::SimpleServer $VERSION;
 
 
 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;
 # 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
             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:
 
 
                                    ## 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.
 
 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.
 =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
                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
        };
 
                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
 
 
 =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
 =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
 
 
 =head1 SEE ALSO