YAZ 5.35.1
zoom-p.h
Go to the documentation of this file.
1/* This file is part of the YAZ toolkit.
2 * Copyright (C) Index Data.
3 * All rights reserved.
4 * Redistribution and use in source and binary forms, with or without
5 * modification, are permitted provided that the following conditions are met:
6 *
7 * * Redistributions of source code must retain the above copyright
8 * notice, this list of conditions and the following disclaimer.
9 * * Redistributions in binary form must reproduce the above copyright
10 * notice, this list of conditions and the following disclaimer in the
11 * documentation and/or other materials provided with the distribution.
12 * * Neither the name of Index Data nor the names of its contributors
13 * may be used to endorse or promote products derived from this
14 * software without specific prior written permission.
15 *
16 * THIS SOFTWARE IS PROVIDED BY THE REGENTS AND CONTRIBUTORS ``AS IS'' AND ANY
17 * EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED
18 * WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE
19 * DISCLAIMED. IN NO EVENT SHALL THE REGENTS AND CONTRIBUTORS BE LIABLE FOR ANY
20 * DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES
21 * (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES;
22 * LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND
23 * ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT
24 * (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF
25 * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
26 */
31#include <yaz/proto.h>
32#include <yaz/oid_db.h>
33#include <yaz/comstack.h>
34#include <yaz/wrbuf.h>
35#include <yaz/zoom.h>
36#include <yaz/srw.h>
37#include <yaz/cookie.h>
38#include <yaz/mutex.h>
39#if HAVE_LIBMEMCACHED
40#include <libmemcached/memcached.h>
41#endif
42#if HAVE_HIREDIS
43#include <hiredis/hiredis.h>
44#endif
45
46#define SHPTR 1
47
48typedef struct ZOOM_Event_p *ZOOM_Event;
49
57
58
59typedef struct ZOOM_task_p *ZOOM_task;
60
61#define STATE_IDLE 0
62#define STATE_CONNECTING 1
63#define STATE_ESTABLISHED 2
64
68 char *host_port;
69 int error;
70 char *addinfo;
71 char *diagset;
72 int state;
73 int mask;
79
80 char *buf_in;
81 int len_in;
82 char *buf_out;
84 char *proxy;
85 char *tproxy;
87 char *charset;
88 char *lang;
90 char *cookie_in;
91 char *client_IP;
93
94 char *user;
95 char *group;
96 char *password;
98
99 int async;
102
105
112 int no_redirects; /* 0 for no redirects. >0 for number of redirects */
114 char *location;
115
119#if HAVE_LIBMEMCACHED
120 memcached_st *mc_st;
121#endif
122#if HAVE_HIREDIS
123 redisContext *redis_c;
124#endif
127};
128
130
131#define RECORD_HASH_SIZE 131
132
138 int step;
140 char *setname;
148#if SHPTR
149 struct WRBUF_shptr *record_wrbuf;
150#endif
155 char **facets_names; /* redundant. For ZOOM_resultset_facets_names only */
157 int live_set; /* 0=no hit count, 1=cached hit, 2=hits + real set */
158};
159
161 char *term;
163};
164
170
183
192
195 int which;
196 union {
197#define ZOOM_TASK_SEARCH 1
198 struct {
199 int count;
200 int start;
202 char *syntax;
204 char *schema;
206#define ZOOM_TASK_CONNECT 3
207#define ZOOM_TASK_SCAN 4
208 struct {
211#define ZOOM_TASK_PACKAGE 5
213#define ZOOM_TASK_SORT 6
214 struct {
218 } u;
220};
221
226
228
230
231void ZOOM_set_dset_error(ZOOM_connection c, int error,
232 const char *dset,
233 const char *addinfo, const char *addinfo2);
234
235void ZOOM_set_error(ZOOM_connection c, int error, const char *addinfo);
236
239
245 int *num, ODR odr);
247
252
254 const char *syntax,
255 const char *elementSetName,
256 const char *schema);
258 int pos,
259 const char *syntax, const char *elementSetName,
260 const char *schema,
261 Z_SRW_diagnostic *diag);
262
266const char *ZOOM_query_get_sru11(ZOOM_query s);
268
269int ZOOM_uri_to_code(const char *uri);
270
273
275 zoom_ret *cret, char **addinfo);
276
277void ZOOM_set_HTTP_error(ZOOM_connection c, int error,
278 const char *addinfo, const char *addinfo2);
279
285
292 Z_OtherInformation *oi, const char *precision);
294 int pos,
295 const char *syntax, const char *elementSetName,
296 const char *schema,
297 Z_SRW_diagnostic *diag);
299 const char *syntax,
300 const char *elementSetName,
301 const char *schema);
303 const char *syntax,
304 const char *elementSetName,
305 const char *schema);
310
311/*
312 * Local variables:
313 * c-basic-offset: 4
314 * c-file-style: "Stroustrup"
315 * indent-tabs-mode: nil
316 * End:
317 * vim: shiftwidth=4 tabstop=8 expandtab
318 */
319
Header for COMSTACK.
HTTP cookie handling.
int opt
Definition initopt.c:19
Header for Mutex functions.
nmem_int_t Odr_int
Definition odr.h:47
Header for OID database.
oid_proto
Definition oid_util.h:45
int options(const char *desc, char **argv, int argc, char **arg)
command-line options parsing for main
Definition options.c:21
Header for Z39.50 Protocol.
Header for SRW/SRU.
char * diagset
Definition zoom-p.h:71
char * tproxy
Definition zoom-p.h:85
int preferred_message_size
Definition zoom-p.h:104
char * charset
Definition zoom-p.h:87
char * buf_out
Definition zoom-p.h:82
char * sru_version
Definition zoom-p.h:92
char * client_IP
Definition zoom-p.h:91
ZOOM_Event m_queue_back
Definition zoom-p.h:110
ZOOM_Event m_queue_front
Definition zoom-p.h:109
char * password
Definition zoom-p.h:96
ZOOM_resultset resultsets
Definition zoom-p.h:108
char * cookie_out
Definition zoom-p.h:89
char * cookie_in
Definition zoom-p.h:90
ZOOM_options options
Definition zoom-p.h:107
enum oid_proto proto
Definition zoom-p.h:66
zoom_sru_mode sru_mode
Definition zoom-p.h:111
COMSTACK cs
Definition zoom-p.h:67
ZOOM_task tasks
Definition zoom-p.h:106
int support_named_resultsets
Definition zoom-p.h:100
int maximum_record_size
Definition zoom-p.h:103
char * host_port
Definition zoom-p.h:68
WRBUF saveAPDU_wrbuf
Definition zoom-p.h:118
char * addinfo
Definition zoom-p.h:70
int url_authentication
Definition zoom-p.h:97
yaz_cookies_t cookies
Definition zoom-p.h:113
char * location
Definition zoom-p.h:114
char * buf_in
Definition zoom-p.h:80
struct facet_term_p * facet_terms
Definition zoom-p.h:168
char * facet_name
Definition zoom-p.h:166
ZOOM_options options
Definition zoom-p.h:187
char * buf_out
Definition zoom-p.h:189
ZOOM_connection connection
Definition zoom-p.h:188
int num_databaseNames
Definition zoom-p.h:146
char ** facets_names
Definition zoom-p.h:155
ZOOM_query query
Definition zoom-p.h:135
ZOOM_options options
Definition zoom-p.h:143
char * req_facets
Definition zoom-p.h:152
ZOOM_resultset next
Definition zoom-p.h:151
ZOOM_facet_field * res_facets
Definition zoom-p.h:153
Odr_int size
Definition zoom-p.h:137
char * setname
Definition zoom-p.h:140
YAZ_MUTEX mutex
Definition zoom-p.h:147
Z_SortKeySpecList * r_sort_spec
Definition zoom-p.h:134
char ** databaseNames
Definition zoom-p.h:145
ZOOM_record_cache record_hash[RECORD_HASH_SIZE]
Definition zoom-p.h:142
ZOOM_connection connection
Definition zoom-p.h:144
int num_databaseNames
Definition zoom-p.h:181
ZOOM_query query
Definition zoom-p.h:176
Z_SRW_scanResponse * srw_scan_response
Definition zoom-p.h:178
char ** databaseNames
Definition zoom-p.h:180
ZOOM_connection connection
Definition zoom-p.h:175
ZOOM_options options
Definition zoom-p.h:174
Z_ScanResponse * scan_response
Definition zoom-p.h:177
int start
Definition zoom-p.h:200
ZOOM_resultset resultset
Definition zoom-p.h:201
ZOOM_scanset scan
Definition zoom-p.h:209
ZOOM_package package
Definition zoom-p.h:212
int running
Definition zoom-p.h:194
struct ZOOM_task_p::@133::@134 search
char * syntax
Definition zoom-p.h:202
struct ZOOM_task_p::@133::@136 sort
char * elementSetName
Definition zoom-p.h:203
union ZOOM_task_p::@133 u
ZOOM_task next
Definition zoom-p.h:219
int which
Definition zoom-p.h:195
int count
Definition zoom-p.h:199
ZOOM_query q
Definition zoom-p.h:216
char * schema
Definition zoom-p.h:204
Definition zgdu.h:68
int frequency
Definition zoom-p.h:162
char * term
Definition zoom-p.h:161
Definition odr.h:125
string buffer
Definition wrbuf.h:43
Header for WRBUF (growing buffer)
struct ZOOM_record_cache_p * ZOOM_record_cache
Definition zoom-p.h:129
struct ZOOM_Event_p * ZOOM_Event
Definition zoom-p.h:48
char ** ZOOM_connection_get_databases(ZOOM_connection con, ZOOM_options options, int *num, ODR odr)
Definition zoom-c.c:322
ZOOM_Event ZOOM_Event_create(int kind)
Definition zoom-event.c:42
struct ZOOM_task_p * ZOOM_task
Definition zoom-p.h:59
void ZOOM_handle_search_result(ZOOM_connection c, ZOOM_resultset resultset, Z_OtherInformation *o)
const char * ZOOM_query_get_sru11(ZOOM_query s)
Definition zoom-query.c:122
Z_SortKeySpecList * ZOOM_query_get_sortspec(ZOOM_query s)
Definition zoom-query.c:134
zoom_ret ZOOM_send_GDU(ZOOM_connection c, Z_GDU *gdu)
Definition zoom-c.c:1526
void ZOOM_handle_facet_result(ZOOM_connection c, ZOOM_resultset r, Z_OtherInformation *o)
zoom_ret ZOOM_send_buf(ZOOM_connection c)
Definition zoom-c.c:1763
ZOOM_record ZOOM_record_cache_lookup(ZOOM_resultset r, int pos, const char *syntax, const char *elementSetName, const char *schema)
int ZOOM_handle_sru(ZOOM_connection c, Z_HTTP_Response *hres, zoom_ret *cret, char **addinfo)
Definition zoom-sru.c:417
void ZOOM_memcached_destroy(ZOOM_connection c)
int ZOOM_uri_to_code(const char *uri)
Definition zoom-c.c:89
zoom_sru_mode
Definition zoom-p.h:50
@ zoom_sru_get
Definition zoom-p.h:53
@ zoom_sru_soap
Definition zoom-p.h:52
@ zoom_sru_error
Definition zoom-p.h:51
@ zoom_sru_post
Definition zoom-p.h:54
@ zoom_sru_solr
Definition zoom-p.h:55
int ZOOM_test_reconnect(ZOOM_connection c)
Definition zoom-c.c:904
zoom_ret ZOOM_connection_srw_send_search(ZOOM_connection c)
Definition zoom-sru.c:145
void ZOOM_set_error(ZOOM_connection c, int error, const char *addinfo)
Definition zoom-c.c:98
void ZOOM_handle_Z3950_apdu(ZOOM_connection c, Z_APDU *apdu)
zoom_ret ZOOM_connection_Z3950_send_scan(ZOOM_connection c)
Definition zoom-z3950.c:819
int ZOOM_memcached_configure(ZOOM_connection c)
Z_NamePlusRecord * ZOOM_memcached_lookup(ZOOM_resultset r, int pos, const char *syntax, const char *elementSetName, const char *schema)
void ZOOM_options_addref(ZOOM_options opt)
Definition zoom-opt.c:113
void ZOOM_memcached_add(ZOOM_resultset r, Z_NamePlusRecord *npr, int pos, const char *syntax, const char *elementSetName, const char *schema, Z_SRW_diagnostic *diag)
void ZOOM_connection_remove_task(ZOOM_connection c)
Definition zoom-c.c:183
zoom_ret send_Z3950_sort(ZOOM_connection c, ZOOM_resultset resultset)
void ZOOM_handle_facet_list(ZOOM_resultset r, Z_FacetList *fl)
void ZOOM_record_cache_add(ZOOM_resultset r, Z_NamePlusRecord *npr, int pos, const char *syntax, const char *elementSetName, const char *schema, Z_SRW_diagnostic *diag)
zoom_ret ZOOM_connection_Z3950_send_init(ZOOM_connection c)
Definition zoom-z3950.c:570
void ZOOM_memcached_hitcount(ZOOM_connection c, ZOOM_resultset result, Z_OtherInformation *oi, const char *precision)
ZOOM_task ZOOM_connection_add_task(ZOOM_connection c, int which)
Definition zoom-c.c:153
#define RECORD_HASH_SIZE
Definition zoom-p.h:131
void ZOOM_query_get_hash(ZOOM_query s, WRBUF w)
Definition zoom-query.c:144
ZOOM_Event ZOOM_connection_get_event(ZOOM_connection c)
Definition zoom-event.c:52
zoom_ret ZOOM_connection_srw_send_scan(ZOOM_connection c)
Definition zoom-sru.c:92
zoom_ret
Definition zoom-p.h:222
@ zoom_pending
Definition zoom-p.h:223
@ zoom_complete
Definition zoom-p.h:224
zoom_ret ZOOM_connection_Z3950_search(ZOOM_connection c)
const char * ZOOM_query_get_query_string(ZOOM_query s)
Definition zoom-query.c:139
ZOOM_record ZOOM_record_cache_lookup_i(ZOOM_resultset r, int pos, const char *syntax, const char *elementSetName, const char *schema)
void ZOOM_connection_put_event(ZOOM_connection c, ZOOM_Event event)
Definition zoom-event.c:73
void ZOOM_memcached_resultset(ZOOM_resultset r, ZOOM_query q)
void ZOOM_memcached_search(ZOOM_connection c, ZOOM_resultset r)
void ZOOM_set_HTTP_error(ZOOM_connection c, int error, const char *addinfo, const char *addinfo2)
Definition zoom-c.c:1546
void ZOOM_connection_remove_tasks(ZOOM_connection c)
Definition zoom-c.c:223
Z_Query * ZOOM_query_get_Z_Query(ZOOM_query s)
Definition zoom-query.c:129
void ZOOM_Event_destroy(ZOOM_Event event)
Definition zoom-event.c:90
void ZOOM_set_dset_error(ZOOM_connection c, int error, const char *dset, const char *addinfo, const char *addinfo2)
Definition zoom-c.c:54
void ZOOM_memcached_init(ZOOM_connection c)
void ZOOM_connection_remove_events(ZOOM_connection c)
Definition zoom-event.c:95
Header for ZOOM.
typedefZOOM_BEGIN_CDECL struct ZOOM_options_p * ZOOM_options
Definition zoom.h:50