## This file is part of simpleserver
-## Copyright (C) 2000-2011 Index Data.
+## 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:
@ISA = qw(Exporter AutoLoader DynaLoader);
@EXPORT = qw( );
-$VERSION = '1.13';
+$VERSION = '1.17';
bootstrap Net::Z3950::SimpleServer $VERSION;
if (defined($self->{DELETE})) {
set_delete_handler($self->{DELETE});
}
-
+ if (defined($self->{START})) {
+ set_start_handler($self->{START});
+ }
start_server(@args);
}
retrieving the results in the form of structured "records". It is widely
used in libraries around the world, as well as in the US Federal Government.
In addition, it is generally useful whenever you wish to integrate a number
-of different database systems around a shared, asbtract data model.
+of different database systems around a shared, abstract data model.
The model of the module is simple: It implements a "generic" Z39.50
server, which invokes callback functions supplied by you to search
The programmer can specify subroutines to take care of the following type
of events:
+ - Start service (called once).
- Initialize request
- Search request
- Present request
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,
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
## Response parameters:
- ERR_CODE => 0, ## Error code (0=Succesful search)
+ ERR_CODE => 0, ## Error code (0=Successful search)
ERR_STR => "", ## Error string
HITS => 0 ## Number of matches
};
=item C<query>
-Mandatory: a refererence to the RPN tree itself.
+Mandatory: a reference to the RPN tree itself.
=back
=item C<attributeValue>
An integer or string indicating the value of the attribute - for example, under
-BIB-1, if the attribute type is 1, then value 4 indictates a title
-search and 7 indictates an ISBN search; but if the attribute type is
+BIB-1, if the attribute type is 1, then value 4 indicates a title
+search and 7 indicates an ISBN search; but if the attribute type is
2, then value 4 indicates a ``greater than or equal'' search, and 102
indicates a relevance match.
sets are likely to occur, the implementation of a reasonable present
handler can gain performance significantly.
-The informations exchanged between client and present handle are:
+The information exchanged between client and present handle is:
$args = {
## Client/server request:
NUMBER => yyy, ## Number of requested records
- ## Respons parameters:
+ ## Response parameters:
HITS => zzz, ## Number of returned records
ERR_CODE => 0, ## Error code
A better alternative to the TERM member is the the RPN
member, which is a reference to a Net::Z3950::RPN::Term object
-representing the scan cloause. The structure of that object is the
+representing the scan clause. The structure of that object is the
same as for Term objects included as part of the RPN tree passed to
search handlers. This is more useful than the simple TERM because it
includes attributes (e.g. access points associated with the term),
=head2 Close handler
-The argument hash recieved by the close handler has two elements only:
+The argument hash received by the close handler has two elements only:
$args = {
## Server provides:
=head2 Delete handler
-The argument hash recieved by the delete handler has the following elements:
+The argument hash received by the delete handler has the following elements:
$args = {
## Client request:
=head2 Sort handler
-The argument hash recieved by the sort handler has the following elements:
+The argument hash received by the sort handler has the following elements:
$args = {
## Client request:
Precisely why all of the above is so is not clear, but goes some way
to explain why, in the Z39.50 world, the developers of the standard
-are not so much worshipped as blamed.
+are not so much worshiped as blamed.
The backend function should set STATUS to 0 on success, 1 for "partial
success" (don't ask) or 2 on failure, in which case ERR_CODE and
=head1 COPYRIGHT AND LICENCE
-Copyright (C) 2000-2011 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,