First work on Z39.50 persistence.
[egate.git] / kernel / kernel.h
1 /* Gateway kernel
2  * Europagate, 1995
3  *
4  * $Log: kernel.h,v $
5  * Revision 1.13  1995/04/19 07:31:04  adam
6  * First work on Z39.50 persistence.
7  *
8  * Revision 1.12  1995/04/17  09:34:29  adam
9  * Timeout (idletime) adjustable. Minor changes in kernel.
10  *
11  * Revision 1.11  1995/03/28  11:42:34  adam
12  * First use of string-queue utility.
13  *
14  * Revision 1.10  1995/03/27  08:24:01  adam
15  * First use of gip interface and gw-db.
16  * First work on eti program.
17  *
18  * Revision 1.9  1995/03/03  17:19:13  adam
19  * Smarter presentation. Bug fix in email header interpretation.
20  *
21  * Revision 1.8  1995/03/01  14:32:24  adam
22  * Better diagnostics. Default is, that only one database selected when
23  * several are known.
24  *
25  * Revision 1.7  1995/02/23  08:32:16  adam
26  * Changed header.
27  *
28  * Revision 1.5  1995/02/22  15:22:32  adam
29  * Much more checking of run-time state. Show command never retrieves
30  * more records than indicated by the previous search request. Help
31  * command available. The maximum number of records retrieved can be
32  * controlled now.
33  *
34  * Revision 1.4  1995/02/20  21:16:18  adam
35  * FML support. Bug fixes. Profile for drewdb.
36  *
37  * Revision 1.3  1995/02/16  18:35:08  adam
38  * First use of Zdist library. Search requests are supported.
39  * Present requests are not supported yet.
40  *
41  * Revision 1.2  1995/02/16  13:20:59  adam
42  * Organization of resource files for targets and conversion
43  * language implemented.
44  *
45  * Revision 1.1  1995/02/15  17:45:29  adam
46  * First version of email gateway kernel. Email requests are read
47  * from stdin. The output is transferred to an MTA if 'From' is
48  * found in the header - or stdout if absent. No Z39.50 client is used.
49  *
50  */
51
52 #include <gw-res.h>
53 #include <gw-log.h>
54 #include <ccl.h>
55 #include <zaccess.h>
56
57 #include <iso2709.h>
58 #if USE_FML
59 #include <fmlmarc.h>
60 #endif
61 #include <strqueue.h>
62
63 #define LINE_MAX 1024
64
65 struct gw_user_set {
66     char   *name;               /* name of result set */
67     int    hits;                /* -1 on error */
68     char   *database;           /* database(s) in which we search */
69     struct ccl_rpn_node *rpn;   /* rpn request */
70     int    present_flag;        /* present in target (presistency) */
71     struct gw_user_set *prev;
72 };
73
74 struct gw_kernel_info {
75     CCL_bibset bibset;
76     GwRes kernel_res;
77     const char *default_res; 
78     const char *override_res;
79     char target[128];
80     char hostname[128];
81     int  port;
82     const char *lang;
83     const char *override_portno;
84     const char *override_hostname;
85     char *databases;
86     char *database;
87     ZASS  zass;
88     int command_no;
89     char  from_str[LINE_MAX+1];
90     const char *reply_fname;
91     int setno;
92 #if USE_FML
93     Fml   fml;
94 #endif
95     struct gw_user_set *sets;
96 };
97
98 extern struct gw_kernel_info info;
99
100 extern FILE *reply_fd;
101
102 int  urp_start   (int continuation, struct str_queue *queue);
103 int  urp_command (struct str_queue *queue);
104 void urp_end     (void);
105
106 void read_kernel_res (void);
107
108 struct gw_user_set *user_set_add (const char *name, int hits,
109                                   const char *database,
110                                   struct ccl_rpn_node *rpn,
111                                   int present_flag);
112 struct gw_user_set *user_set_search (const char *name);
113 void user_set_init (void);
114
115 int lgets (char *buf, int max, int fd);
116
117 const struct zass_searchent *zass_p_search (ZASS zass, 
118                                       struct ccl_rpn_node *rpn,
119                                       const char *result_set,
120                                       const char *database,
121                                       struct gw_user_set *sets);
122 const struct zass_presentent *zass_p_present (ZASS zass,
123                                       const char *result_set,
124                                       int offset, int number);
125
126 int load_p_state (int userid);
127 int save_p_state (int userid);
128 int reopen_target (void);
129
130 #define KERNEL_LOG "kernel"