Minor changes.
[egate.git] / kernel / kernel.h
index 5aab169..704bb66 100644 (file)
@@ -1,8 +1,87 @@
+/*
+ * Copyright (c) 1995, the EUROPAGATE consortium (see below).
+ *
+ * The EUROPAGATE consortium members are:
+ *
+ *    University College Dublin
+ *    Danmarks Teknologiske Videnscenter
+ *    An Chomhairle Leabharlanna
+ *    Consejo Superior de Investigaciones Cientificas
+ *
+ * Permission to use, copy, modify, distribute, and sell this software and
+ * its documentation, in whole or in part, for any purpose, is hereby granted,
+ * provided that:
+ *
+ * 1. This copyright and permission notice appear in all copies of the
+ * software and its documentation. Notices of copyright or attribution
+ * which appear at the beginning of any file must remain unchanged.
+ *
+ * 2. The names of EUROPAGATE or the project partners may not be used to
+ * endorse or promote products derived from this software without specific
+ * prior written permission.
+ *
+ * 3. Users of this software (implementors and gateway operators) agree to
+ * inform the EUROPAGATE consortium of their use of the software. This
+ * information will be used to evaluate the EUROPAGATE project and the
+ * software, and to plan further developments. The consortium may use
+ * the information in later publications.
+ * 
+ * 4. Users of this software agree to make their best efforts, when
+ * documenting their use of the software, to acknowledge the EUROPAGATE
+ * consortium, and the role played by the software in their work.
+ *
+ * THIS SOFTWARE IS PROVIDED "AS IS" AND WITHOUT WARRANTY OF ANY KIND,
+ * EXPRESS, IMPLIED, OR OTHERWISE, INCLUDING WITHOUT LIMITATION, ANY
+ * WARRANTY OF MERCHANTABILITY OR FITNESS FOR A PARTICULAR PURPOSE.
+ * IN NO EVENT SHALL THE EUROPAGATE CONSORTIUM OR ITS MEMBERS BE LIABLE
+ * FOR ANY SPECIAL, INCIDENTAL, INDIRECT OR CONSEQUENTIAL DAMAGES OF
+ * ANY KIND, OR ANY DAMAGES WHATSOEVER RESULTING FROM LOSS OF USE, DATA
+ * OR PROFITS, WHETHER OR NOT ADVISED OF THE POSSIBILITY OF DAMAGE, AND
+ * ON ANY THEORY OF LIABILITY, ARISING OUT OF OR IN CONNECTION WITH THE
+ * USE OR PERFORMANCE OF THIS SOFTWARE.
+ *
+ */
 /* Gateway kernel
  * Europagate, 1995
  *
  * $Log: kernel.h,v $
- * Revision 1.10  1995/03/27 08:24:01  adam
+ * Revision 1.21  1996/02/12 10:04:52  adam
+ * The gateway doesn't try to reconnect if it is already known that
+ * it will fail (connect_fail flag introduced).
+ *
+ * Revision 1.20  1995/07/28  10:51:08  adam
+ * Bug fix: account from previous session had effect when new target command
+ * was executed.
+ *
+ * Revision 1.19  1995/07/11  11:49:12  adam
+ * LINE_MAX renamed to STR_LINE_MAX.
+ *
+ * Revision 1.18  1995/05/16  09:40:42  adam
+ * LICENSE. Setting of CCL token names (and/or/not/set) in read_kernel_res.
+ *
+ * Revision 1.17  1995/05/03  16:34:18  adam
+ * CCL def command, i.e. user definitions - saved as resource files.
+ *
+ * Revision 1.16  1995/05/03  07:37:37  adam
+ * CCL commands stop/continue implemented. New functions gw_res_{int,bool}
+ * are used when possible.
+ *
+ * Revision 1.15  1995/04/19  13:19:08  adam
+ * New command: account - for authentication.
+ *
+ * Revision 1.14  1995/04/19  10:46:18  adam
+ * Persistency works much better now. New command: status - history-like
+ *
+ * Revision 1.13  1995/04/19  07:31:04  adam
+ * First work on Z39.50 persistence.
+ *
+ * Revision 1.12  1995/04/17  09:34:29  adam
+ * Timeout (idletime) adjustable. Minor changes in kernel.
+ *
+ * Revision 1.11  1995/03/28  11:42:34  adam
+ * First use of string-queue utility.
+ *
+ * Revision 1.10  1995/03/27  08:24:01  adam
  * First use of gip interface and gw-db.
  * First work on eti program.
  *
 #if USE_FML
 #include <fmlmarc.h>
 #endif
+#include <strqueue.h>
 
-int urp (int fd);
+#define STR_LINE_MAX 1024
 
 struct gw_user_set {
-    char *name;        /* name of result set */
-    int hits;          /* -1 on error */
+    char   *name;               /* name of result set */
+    int    hits;                /* -1 on error */
+    char   *database;           /* database(s) in which we search */
+    struct ccl_rpn_node *rpn;   /* rpn request */
+    int    present_flag;        /* present in target (presistency) */
+    char   *search_str;         /* find request string */
     struct gw_user_set *prev;
 };
 
@@ -65,13 +149,22 @@ struct gw_kernel_info {
     const char *override_res;
     char target[128];
     char hostname[128];
+    char account[128];
+    int  account_in_session;
     int  port;
+    int  connect_failed;
     const char *lang;
     const char *override_portno;
     const char *override_hostname;
     char *databases;
     char *database;
     ZASS  zass;
+    int command_no;
+    char  from_str[STR_LINE_MAX+1];
+    const char *reply_fname;
+    int setno;
+    int next_position;
+    int userid;
 #if USE_FML
     Fml   fml;
 #endif
@@ -82,14 +175,34 @@ extern struct gw_kernel_info info;
 
 extern FILE *reply_fd;
 
+int  urp_start   (int continuation, struct str_queue *queue);
+int  urp_command (struct str_queue *queue);
+void urp_end     (void);
+
 void read_kernel_res (void);
 
-struct gw_user_set *user_set_add (const char *name, int hits);
+struct gw_user_set *user_set_add (const char *name, int hits,
+                                  const char *database,
+                                 struct ccl_rpn_node *rpn,
+                                 int present_flag,
+                                  const char *search_str);
 struct gw_user_set *user_set_search (const char *name);
 void user_set_init (void);
-void tty_emit (int ch);
-void tty_init (FILE *out, int min, int max);
 
 int lgets (char *buf, int max, int fd);
 
+const struct zass_searchent *zass_p_search (ZASS zass, 
+                                      struct ccl_rpn_node *rpn,
+                                      const char *result_set,
+                                     const char *database,
+                                     struct gw_user_set *sets);
+const struct zass_presentent *zass_p_present (ZASS zass,
+                                      const char *result_set,
+                                     int offset, int number);
+
+int load_p_state (int userid);
+int save_p_state (int userid);
+void del_p_state (int userid);
+int reopen_target (void);
+
 #define KERNEL_LOG "kernel"