From 2a29baa6e68f61ce9d6da994a2f7609134d06adf Mon Sep 17 00:00:00 2001 From: Adam Dickmeiss Date: Mon, 10 Jul 1995 13:55:25 +0000 Subject: [PATCH] More work on documentation. --- doc/egate.sgml | 114 +++++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 112 insertions(+), 2 deletions(-) diff --git a/doc/egate.sgml b/doc/egate.sgml index 9805f26..adf5eab 100644 --- a/doc/egate.sgml +++ b/doc/egate.sgml @@ -1,13 +1,13 @@
Email/Z39.50 gateway guide <author>Europagate, 1995 -<date>$Revision: 1.5 $ +<date>$Revision: 1.6 $ <abstract> This document describes a Email server that provides access to the Z39.50 protocol. @@ -506,6 +506,9 @@ Information about each result set includes: <item>query </itemize> +A persistency file is removed each time a new target is selected. +It is our experiences that the persistency files are very small. + <sect1>CCL <p> @@ -526,10 +529,117 @@ CCL parser itself is not tied to Bib-1. <sect1>FML <p> +The FML system is used to handle the presentation of MARC +records. There are some deviations to the design report, however. +The most important changes are: +<itemize> +<item>The <tt/expr/ function is not implemented. Instead arithmetic +operators <tt/plus/, <tt/minus/, <tt/mult/ and <tt/div/ are +implemented. Also relational operators <tt/gt/, <tt/lt/ ... are +implemented. +<item>The <tt/lindex/ function is called <tt/index/ and it is a binary +operator where the left operand is the list and the right operand is +the index integer. +<item>The MARC extraction routines are not implemented. +Instead, a MARC record is transferred as an argument +to a formatting-routine (in list notation). The formatting +routine then extracts fields from the list by list/string +manipulation functions. +<item>A new statement, <tt/bin/, is implemented to define +binary operators (functions). +</itemize> <sect1>IPC <p> +As described in the design, FIFOs are used to communicate between +the ETI, MONITOR and KERNEL. The ES can run without the MONITOR, +however. The primary reason for the presence of the MONITOR was +to assure that the KERNELs would release the resources used by the +persistency layer. But, since the persistency layer did turn out to +use virtually no disk space at all, there was no point in starting +a KERNEL process to remove its files — hence this facility +was not implemented. The only purpose of the MONITOR is to keep the +number of running KERNELs at a maximum level and even that +is probably useless since most unices will swap KERNEL processes +out anyway. + +The idle time +before a KERNEL exits and saves its persistency file is not +controlled by the MONITOR. Saving the persistency file and +keeping it is usually a good approach — even when a +user doesn't reference/show old result-sets since the user +has a notion of <em/current target/ and database. + +<sect1>Source + +<p> +In this section a short description of each source module is +given. Each module is implemented in a separate sub directory. +Any public headers are located in the <tt/include/ directory. + +<descrip> +<tag/res+log/ is an implementation of the logging system +and the resource management sub system. Note that the +resource module depends on the logging facility. Logging +is implemented in <tt>gw-log.c</tt> and <tt/gw-log.h/. The +file <tt>gw-log-test.c</tt> is small test program for the +logging system. The core of the resource management is implemented +in <tt>gw-res.c</tt>. The files <tt>gw-res-bool.c</tt> and +<tt>gw-res-int.c</tt> implement two utility routines &mdash +on top of the resource management. The header file +<tt>gw-resp.h</tt> is a private header file and <tt>gw-res.h</tt> +is a public header file. + +<tag/ccl/ implements CCL to RPN mapping and a tokenization + utility for other CCL commands. The mapping function is + implemented in <tt>cclfind.c</tt>. Qualifiers are handled in + <tt>cclqual.c</tt> while reading of qualifier mappings from a + file is implemented in <tt>cclqfile.c</tt>. Scanning is implemented + in <tt>ccltoken.c</tt>. String utilities, which might be changed if + other character sets are needed, is implemented in + <tt>cclstr.c</tt>. Table of error messages is implemented in + <tt>cclerrms.c</tt>. + +<tag/util/ implements various utilities: + <descrip> + <tag>MARC utility</tag> implemented in <tt>iso2709</tt>... + <tag>Database utility</tag> implemented in <tt>gw-db.[ch]</tt>. This + utility is used to map a user (email) to an integer. + <tag>String queue utility</tag> implemented in <tt>strqueue.[ch]</tt>. This + utiltiy is used to queue incoming mail in the ETI, KERNEL and + the MONITOR. + <tag>Pretty printer</tag> implemented in <tt>ttyemit.[ch]</tt> + — used by the URP. + <tag>FIFO IPC utiltiy</tag> implemented in <tt>gip*.[ch]</tt> — + used by the ETI, KERNEL and MONITOR. + </descrip> + +<tag/fml/ implements FML. The top level functions are implemented + in <tt>fml.c</tt>, <tt>fmlcall.c</tt> and <tt>fmlcalls.c</tt>. + Scanning is implemented in <tt>fmltoken.c</tt>. + Memory management is implemented in <tt>fmlmem.c</tt>. + Arithmetic operators are implemented in <tt>fmlarit.c</tt>. + String manipulation functions are implemented in <tt>fmlstr.c</tt>. + Relational operators are implemented in <tt>fmlrel.c</tt>. + List maniuplations are performed in <tt>fmllist.c</tt>. + FML symbol table management is implemented in <tt>fmlsym.c</tt>. + Conversion from ISO2709 to list notation is implemented in + <tt>fmlmarc.c</tt>. + +<tag/zlayer-zdist/ implements the high-level Z39.50 API on top + of Zdist. This task is implemented in <tt>zaccess.c</tt>. The + public header file is called <tt>zaccess.h</tt>. + +<tag/zlayer-yaz/ implements the high-level Z39.50 API on top + of YAZ. This task is implemented in <tt>zaccess.c</tt>. The + public header file is called <tt>zaccess.h</tt>. + +<tag/kernel/ implements the ETI, KERNEL and MONITOR. The kernel + itself is implemented in <tt>main.c</tt>, <tt>urp.c</tt> and + <tt>persist.c</tt>. The ETI is implemented in <tt>eti.c</tt> and + the MONITOR is implemented <tt>monitor.c</tt>. +</descrip> <sect>LICENSE -- 1.7.10.4