X-Git-Url: http://git.indexdata.com/?a=blobdiff_plain;f=doc%2Ffrontend.xml;h=99f49094e835fccd4651498f8720acbe030b7283;hb=9287c96097c00d28310becb14ea3dd7cfb9f2ab0;hp=70329d01f2e65a1f7e75b39aacc5a89b5d3b2dab;hpb=590c128319e6987f82f3e798b12173c5ecf197b4;p=yaz-moved-to-github.git diff --git a/doc/frontend.xml b/doc/frontend.xml index 70329d0..99f4909 100644 --- a/doc/frontend.xml +++ b/doc/frontend.xml @@ -1,7 +1,7 @@ - + Generic server Introduction - + If you aren't into documentation, a good way to learn how the back end interface works is to look at the backend.h @@ -52,7 +52,8 @@ The backend API consists of a small number of function handlers and structure definitions. You are required to provide the main() routine for the server (which can be - quite simple), as well as a set of handlers to match each of the prototypes. + quite simple), as well as a set of handlers to match each of the + prototypes. The interface functions that you write can use any mechanism you like to communicate with your database system: You might link the whole thing together with your database application and access it by @@ -224,7 +225,7 @@ statserv_options_block *statserv_getcontrol(void); int idle_timeout; - Maximum session idletime, in minutes. Zero indicates + Maximum session idle-time, in minutes. Zero indicates no (infinite) timeout. Default is 120 minutes. @@ -342,6 +343,7 @@ typedef struct bend_initrequest Z_ReferenceId *referenceId;/* reference ID */ char *peer_name; /* dns host of peer (client) */ + char *implementation_id; char *implementation_name; char *implementation_version; int (*bend_sort) (void *handle, bend_sort_rr *rr); @@ -394,8 +396,10 @@ typedef struct bend_initresult The members peer_name, + implementation_id, implementation_name and - implementation_version holds DNS of client, name + implementation_version holds + DNS of client, ID of implementor, name of client (Z39.50) implementation - and version. @@ -649,7 +653,7 @@ typedef enum { } bend_scan_status; typedef struct bend_scan_rr { - int num_bases; /* number of elements in databaselist */ + int num_bases; /* number of elements in database list */ char **basenames; /* databases to search */ oid_value attributeset; Z_ReferenceId *referenceId; /* reference ID */ @@ -676,129 +680,37 @@ typedef struct bend_scan_rr { The finished application has the following invocation syntax (by way of statserv_main()): - - - appname [-szSiTu -a apdufile -l logfile -v loglevel -c config] - [listener ...] - - + + + appname + + + + + + + + + + + + listener-spec + + - The options are - - + The options are: - -a - file - - Specify a file for dumping PDUs (for diagnostic purposes). - The special name "-" sends output to - stderr. - - - -S - - Don't fork or make threads on connection requests. This is good for - debugging, but not recommended for real operation: Although the - server is asynchronous and non-blocking, it can be nice to keep - a software malfunction (okay then, a crash) from affecting all - current users. - - - -T - - Operate the server in threaded mode. The server creates a thread - for each connection rather than a fork a process. Only available - on UNIX systems that offers POSIX threads. - + &ztest-options; - -s - - Use the SR protocol (obsolete). - - - -z - - Use the Z39.50 protocol (default). These two options complement - each other. You can use both multiple times on the same command - line, between listener-specifications (see below). This way, you - can set up the server to listen for connections in both protocols - concurrently, on different local ports. - - - -l - file - The logfile. - - - -c - config - A user option that serves as a specifier for some - sort of configuration, e.g. a filename. - The argument to this option is transferred to member - confignameof the - statserv_options_block. - - - -v - level - - The log level. Use a comma-separated list of members of the set - {fatal,debug,warn,log,all,none}. - - - -u - userid - - Set user ID. Sets the real UID of the server process to that of the - given user. It's useful if you aren't comfortable with having the - server run as root, but you need to start it as such to bind a - privileged port. - - - -w - dir - - Working directory. - - - -i - - Use this to make the the server run from the - inetd server (UNIX only). - - - -install - - Use this to install the server as an NT service (Windows 2000/NT only). - Control the server by going to the Services in the Control Panel. - - - -remove - - Use this to remove the server from the NT services (Windows 2000/NT only). - - - -t - minutes - - Idle session timeout, in minutes. - - - -k - size - - Maximum record size/message size, in kilobytes. - - - - + A listener specification consists of a transport mode followed by a colon (:) followed by a listener address. The transport mode is - either tcp or ssl. + either tcp, unix: or + ssl. - + For TCP and SSL, an address has the form @@ -812,24 +724,29 @@ typedef struct bend_scan_rr { - Examples + For UNIX, the address is the filename of socket. - - tcp:dranet.dra.com - - ssl:ssl.enterprise.com:3000 - - - In both cases, the special hostname "@" is mapped to + For TCP/IP and SSL, the special hostname "@" is mapped to the address INADDR_ANY, which causes the server to listen on any local interface. + + + Examples: + + tcp:@:210 + + ssl:@:3000 + + unix:/tmp/yaz + + - +