YAZ
4.2.57
Main Page
Data Structures
Files
File List
Globals
src
zoom-p.h
Go to the documentation of this file.
1
/* This file is part of the YAZ toolkit.
2
* Copyright (C) 1995-2013 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/mutex.h
>
38
39
#define SHPTR 1
40
#define ZOOM_RESULT_LISTS 0
41
42
typedef
struct
ZOOM_Event_p
*
ZOOM_Event
;
43
44
typedef
enum
{
45
zoom_sru_error
,
46
zoom_sru_soap
,
47
zoom_sru_get
,
48
zoom_sru_post
,
49
zoom_sru_solr
50
}
zoom_sru_mode
;
51
52
53
typedef
struct
ZOOM_task_p
*
ZOOM_task
;
54
55
#define STATE_IDLE 0
56
#define STATE_CONNECTING 1
57
#define STATE_ESTABLISHED 2
58
59
#if ZOOM_RESULT_LISTS
60
typedef
struct
ZOOM_resultsets_p *ZOOM_resultsets;
61
#endif
62
63
struct
ZOOM_connection_p
{
64
enum
oid_proto
proto
;
65
COMSTACK
cs
;
66
char
*
host_port
;
67
int
error
;
68
char
*
addinfo
;
69
char
*
diagset
;
70
int
state
;
71
int
mask
;
72
int
reconnect_ok
;
73
ODR
odr_in
;
74
ODR
odr_out
;
75
ODR
odr_print
;
76
ODR
odr_save
;
77
78
char
*
buf_in
;
79
int
len_in
;
80
char
*
buf_out
;
81
int
len_out
;
82
char
*
proxy
;
83
char
*
tproxy
;
84
char
*
charset
;
85
char
*
lang
;
86
char
*
cookie_out
;
87
char
*
cookie_in
;
88
char
*
client_IP
;
89
char
*
sru_version
;
90
91
char
*
user
;
92
char
*
group
;
93
char
*
password
;
94
95
int
async
;
96
int
support_named_resultsets
;
97
int
last_event
;
98
99
int
maximum_record_size
;
100
int
preferred_message_size
;
101
102
ZOOM_task
tasks
;
103
ZOOM_options
options
;
104
#if ZOOM_RESULT_LISTS
105
ZOOM_resultsets
resultsets
;
106
#else
107
ZOOM_resultset
resultsets
;
108
#endif
109
ZOOM_Event
m_queue_front
;
110
ZOOM_Event
m_queue_back
;
111
zoom_sru_mode
sru_mode
;
112
int
no_redirects
;
/* 0 for no redirects. >0 for number of redirects */
113
114
int
log_details
;
115
int
log_api
;
116
WRBUF
saveAPDU_wrbuf
;
117
};
118
119
#if ZOOM_RESULT_LISTS
120
struct
ZOOM_resultsets_p {
121
ZOOM_resultset
resultset;
122
ZOOM_resultsets next;
123
};
124
#endif
125
126
typedef
struct
ZOOM_record_cache_p
*
ZOOM_record_cache
;
127
128
#define RECORD_HASH_SIZE 131
129
130
struct
ZOOM_resultset_p
{
131
Z_SortKeySpecList
*
r_sort_spec
;
132
ZOOM_query
query
;
133
int
refcount
;
134
Odr_int
size
;
135
int
step
;
136
int
piggyback
;
137
char
*
setname
;
138
char
*
schema
;
139
ODR
odr
;
140
ZOOM_record_cache
record_hash
[
RECORD_HASH_SIZE
];
141
ZOOM_options
options
;
142
ZOOM_connection
connection
;
143
char
**
databaseNames
;
144
int
num_databaseNames
;
145
YAZ_MUTEX
mutex
;
146
#if SHPTR
147
struct
WRBUF_shptr *
record_wrbuf
;
148
#endif
149
#if ZOOM_RESULT_LISTS
150
#else
151
ZOOM_resultset
next
;
152
#endif
153
ZOOM_facet_field
*
facets
;
154
int
num_facets
;
155
char
**
facets_names
;
156
};
157
158
struct
facet_term_p
{
159
char
*
term
;
160
int
frequency
;
161
};
162
163
struct
ZOOM_facet_field_p
{
164
char
*
facet_name
;
165
int
num_terms
;
166
struct
facet_term_p
*
facet_terms
;
167
};
168
169
struct
ZOOM_scanset_p
{
170
int
refcount
;
171
ODR
odr
;
172
ZOOM_options
options
;
173
ZOOM_connection
connection
;
174
ZOOM_query
query
;
175
Z_ScanResponse
*
scan_response
;
176
Z_SRW_scanResponse
*
srw_scan_response
;
177
178
char
**
databaseNames
;
179
int
num_databaseNames
;
180
};
181
182
struct
ZOOM_package_p
{
183
int
refcount
;
184
ODR
odr_out
;
185
ZOOM_options
options
;
186
ZOOM_connection
connection
;
187
char
*
buf_out
;
188
int
len_out
;
189
};
190
191
struct
ZOOM_task_p
{
192
int
running
;
193
int
which
;
194
union
{
195
#define ZOOM_TASK_SEARCH 1
196
struct
{
197
int
count
;
198
int
start
;
199
ZOOM_resultset
resultset
;
200
char
*
syntax
;
201
char
*
elementSetName
;
202
int
recv_search_fired
;
203
}
search
;
204
#define ZOOM_TASK_RETRIEVE 2
205
struct
{
206
int
start
;
207
ZOOM_resultset
resultset
;
208
int
count
;
209
char
*
syntax
;
210
char
*
elementSetName
;
211
}
retrieve
;
212
#define ZOOM_TASK_CONNECT 3
213
#define ZOOM_TASK_SCAN 4
214
struct
{
215
ZOOM_scanset
scan
;
216
}
scan
;
217
#define ZOOM_TASK_PACKAGE 5
218
ZOOM_package
package
;
219
#define ZOOM_TASK_SORT 6
220
struct
{
221
ZOOM_resultset
resultset
;
222
ZOOM_query
q
;
223
}
sort
;
224
}
u
;
225
ZOOM_task
next
;
226
};
227
228
typedef
enum
{
229
zoom_pending
,
230
zoom_complete
231
}
zoom_ret
;
232
233
void
ZOOM_options_addref
(
ZOOM_options
opt
);
234
235
void
ZOOM_handle_Z3950_apdu
(
ZOOM_connection
c,
Z_APDU
*apdu);
236
237
void
ZOOM_set_dset_error
(
ZOOM_connection
c,
int
error,
238
const
char
*dset,
239
const
char
*addinfo,
const
char
*addinfo2);
240
241
void
ZOOM_set_error
(
ZOOM_connection
c,
int
error,
const
char
*addinfo);
242
243
ZOOM_Event
ZOOM_Event_create
(
int
kind);
244
void
ZOOM_connection_put_event
(
ZOOM_connection
c, ZOOM_Event event);
245
246
zoom_ret
ZOOM_connection_Z3950_send_search
(
ZOOM_connection
c);
247
zoom_ret
send_Z3950_present
(
ZOOM_connection
c);
248
zoom_ret
ZOOM_connection_Z3950_send_scan
(
ZOOM_connection
c);
249
zoom_ret
ZOOM_send_buf
(
ZOOM_connection
c);
250
zoom_ret
send_Z3950_sort
(
ZOOM_connection
c,
ZOOM_resultset
resultset);
251
char
**
ZOOM_connection_get_databases
(
ZOOM_connection
con,
ZOOM_options
options
,
252
int
*num,
ODR
odr
);
253
zoom_ret
ZOOM_connection_Z3950_send_init
(
ZOOM_connection
c);
254
255
ZOOM_task
ZOOM_connection_add_task
(
ZOOM_connection
c,
int
which);
256
void
ZOOM_connection_remove_task
(
ZOOM_connection
c);
257
int
ZOOM_test_reconnect
(
ZOOM_connection
c);
258
259
ZOOM_record
ZOOM_record_cache_lookup
(
ZOOM_resultset
r,
int
pos,
260
const
char
*syntax,
261
const
char
*elementSetName);
262
void
ZOOM_record_cache_add
(
ZOOM_resultset
r,
Z_NamePlusRecord
*npr,
263
int
pos,
264
const
char
*syntax,
const
char
*elementSetName,
265
const
char
*schema,
266
Z_SRW_diagnostic
*diag);
267
268
Z_Query
*
ZOOM_query_get_Z_Query
(
ZOOM_query
s);
269
Z_SortKeySpecList
*
ZOOM_query_get_sortspec
(
ZOOM_query
s);
270
const
char
*
ZOOM_query_get_query_string
(
ZOOM_query
s);
271
const
char
*
ZOOM_query_get_sru11
(
ZOOM_query
s);
272
273
int
ZOOM_uri_to_code
(
const
char
*uri);
274
275
zoom_ret
ZOOM_connection_srw_send_search
(
ZOOM_connection
c);
276
zoom_ret
ZOOM_connection_srw_send_scan
(
ZOOM_connection
c);
277
278
int
ZOOM_handle_sru
(
ZOOM_connection
c,
Z_HTTP_Response
*hres,
279
zoom_ret
*cret,
char
**addinfo);
280
281
void
ZOOM_set_HTTP_error
(
ZOOM_connection
c,
int
error,
282
const
char
*addinfo,
const
char
*addinfo2);
283
284
ZOOM_Event
ZOOM_connection_get_event
(
ZOOM_connection
c);
285
void
ZOOM_connection_remove_events
(
ZOOM_connection
c);
286
void
ZOOM_Event_destroy
(ZOOM_Event event);
287
zoom_ret
ZOOM_send_GDU
(
ZOOM_connection
c,
Z_GDU
*gdu);
288
void
ZOOM_handle_facet_list
(
ZOOM_resultset
r,
Z_FacetList
*fl);
289
290
/*
291
* Local variables:
292
* c-basic-offset: 4
293
* c-file-style: "Stroustrup"
294
* indent-tabs-mode: nil
295
* End:
296
* vim: shiftwidth=4 tabstop=8 expandtab
297
*/
298
Generated on Wed May 15 2013 14:55:31 for YAZ by
1.8.1.2