YAZ
4.2.57
Main Page
Data Structures
Files
File List
Globals
include
yaz
backend.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
*/
27
36
#ifndef BACKEND_H
37
#define BACKEND_H
38
39
#include <
yaz/yconfig.h
>
40
#include <
yaz/proto.h
>
41
#include <
yaz/srw.h
>
42
#include <
yaz/oid_db.h
>
43
44
YAZ_BEGIN_CDECL
45
46
typedef
struct
association
*
bend_association
;
47
54
typedef
struct
{
55
char
*
setname
;
56
int
replace_set
;
57
int
num_bases
;
58
char
**
basenames
;
59
Z_ReferenceId
*
referenceId
;
60
Z_Query
*
query
;
61
ODR
stream
;
62
ODR
decode
;
63
ODR
print
;
65
bend_association
association
;
66
Odr_int
hits
;
67
int
errcode
;
68
char
*
errstring
;
69
Z_OtherInformation
*
search_info
;
70
char
*
srw_sortKeys
;
71
char
*
srw_setname
;
72
int
*
srw_setnameIdleTime
;
73
int
estimated_hit_count
;
74
int
partial_resultset
;
75
Z_SRW_extra_arg
*
extra_args
;
76
char
*
extra_response_data
;
77
Z_OtherInformation
*
search_input
;
78
Odr_int
present_number
;
79
}
bend_search_rr
;
80
82
typedef
struct
{
83
char
*
setname
;
84
int
start
;
85
int
number
;
86
Odr_oid
*
format
;
87
Z_ReferenceId
*
referenceId
;
88
Z_RecordComposition
*
comp
;
89
ODR
stream
;
90
ODR
print
;
91
bend_association
association
;
93
int
errcode
;
94
char
*
errstring
;
95
}
bend_present_rr
;
96
98
typedef
struct
bend_fetch_rr
{
99
char
*
setname
;
100
int
number
;
101
Z_ReferenceId
*
referenceId
;
102
Odr_oid
*
request_format
;
103
Z_RecordComposition
*
comp
;
104
ODR
stream
;
105
ODR
print
;
107
char
*
basename
;
108
int
len
;
109
char
*
record
;
110
int
last_in_set
;
111
Odr_oid
*
output_format
;
112
int
errcode
;
113
char
*
errstring
;
114
int
surrogate_flag
;
115
char
*
schema
;
116
}
bend_fetch_rr
;
117
119
struct
scan_entry
{
120
char
*
term
;
121
Odr_int
occurrences
;
122
int
errcode
;
123
char
*
errstring
;
124
char
*
display_term
;
125
};
126
127
typedef
enum
{
128
BEND_SCAN_SUCCESS
,
129
BEND_SCAN_PARTIAL
130
}
bend_scan_status
;
131
133
typedef
struct
bend_scan_rr
{
134
int
num_bases
;
135
char
**
basenames
;
136
Odr_oid
*
attributeset
;
137
Z_ReferenceId
*
referenceId
;
138
Z_AttributesPlusTerm
*
term
;
139
ODR
stream
;
140
ODR
print
;
142
int
*
step_size
;
143
int
term_position
;
144
int
num_entries
;
146
/* scan term entries. The called handler does not have
147
to allocate this. Size of entries is num_entries (see above) */
148
struct
scan_entry
*
entries
;
149
bend_scan_status
status
;
150
int
errcode
;
151
char
*
errstring
;
152
char
*
scanClause
;
153
char
*
setname
;
154
Z_SRW_extra_arg
*
extra_args
;
155
char
*
extra_response_data
;
156
}
bend_scan_rr
;
157
159
typedef
struct
bend_update_rr
{
160
int
num_bases
;
161
char
**
basenames
;
162
Z_ReferenceId
*
referenceId
;
163
ODR
stream
;
164
ODR
print
;
165
char
*
operation
;
166
char
*
operation_status
;
167
char
*
record_id
;
168
Z_SRW_recordVersion
*
record_versions
;
169
int
num_versions
;
170
char
*
record_packing
;
171
char
*
record_schema
;
172
char
*
record_data
;
173
char
*
extra_record_data
;
174
char
*
extra_request_data
;
175
char
*
extra_response_data
;
176
char
*
uri
;
177
char
*
message
;
178
char
*
details
;
179
}
bend_update_rr
;
180
182
typedef
struct
bend_delete_rr
{
183
int
function
;
184
int
num_setnames
;
185
char
**
setnames
;
186
Z_ReferenceId
*
referenceId
;
187
int
delete_status
;
188
int
*
statuses
;
189
ODR
stream
;
190
ODR
print
;
191
}
bend_delete_rr
;
192
194
typedef
struct
bend_sort_rr
195
{
196
int
num_input_setnames
;
197
char
**
input_setnames
;
198
char
*
output_setname
;
199
Z_SortKeySpecList
*
sort_sequence
;
200
ODR
stream
;
201
ODR
print
;
202
Z_ReferenceId
*
referenceId
;
203
204
int
sort_status
;
205
int
errcode
;
206
char
*
errstring
;
207
}
bend_sort_rr
;
208
210
typedef
struct
bend_esrequest_rr
211
{
212
int
ItemNo
;
213
Z_ExtendedServicesRequest
*
esr
;
214
215
ODR
stream
;
/* encoding stream */
216
ODR
decode
;
/* decoding stream */
217
ODR
print
;
/* printing stream */
218
Z_ReferenceId
*
referenceId
;
/* reference ID */
219
bend_association
association
;
220
int
errcode
;
/* 0==success, -1==accepted, >0 = failure */
221
char
*
errstring
;
/* system error string or NULL */
222
Z_TaskPackage
*
taskPackage
;
223
}
bend_esrequest_rr
;
224
226
typedef
struct
bend_segment_rr
{
227
Z_Segment
*
segment
;
228
ODR
stream
;
229
ODR
decode
;
230
ODR
print
;
231
bend_association
association
;
232
}
bend_segment_rr
;
233
235
typedef
struct
{
236
ODR
stream
;
237
ODR
decode
;
238
ODR
print
;
239
char
*
explain_buf
;
240
char
*
database
;
241
char
*
schema
;
242
void
*
server_node_ptr
;
243
}
bend_explain_rr
;
244
251
typedef
struct
bend_initrequest
252
{
254
Z_IdAuthentication
*
auth
;
256
ODR
stream
;
258
ODR
print
;
260
ODR
decode
;
262
Z_ReferenceId
*
referenceId
;
264
char
*
peer_name
;
265
270
Z_CharSetandLanguageNegotiation
*
charneg_request
;
271
273
Z_External
*
charneg_response
;
274
279
char
*
query_charset
;
280
286
int
records_in_same_charset
;
287
288
char
*
implementation_id
;
289
char
*
implementation_name
;
290
char
*
implementation_version
;
291
293
int (*
bend_sort
)(
void
*handle,
bend_sort_rr
*rr);
295
int (*
bend_search
)(
void
*handle,
bend_search_rr
*rr);
297
int (*
bend_fetch
)(
void
*handle,
bend_fetch_rr
*rr);
299
int (*
bend_present
)(
void
*handle,
bend_present_rr
*rr);
301
int (*
bend_esrequest
) (
void
*handle,
bend_esrequest_rr
*rr);
303
int (*
bend_delete
)(
void
*handle,
bend_delete_rr
*rr);
305
int (*
bend_scan
)(
void
*handle,
bend_scan_rr
*rr);
307
int (*
bend_segment
)(
void
*handle,
bend_segment_rr
*rr);
309
int (*
bend_explain
)(
void
*handle,
bend_explain_rr
*rr);
311
int (*
bend_srw_scan
)(
void
*handle,
bend_scan_rr
*rr);
313
int (*
bend_srw_update
)(
void
*handle,
bend_update_rr
*rr);
314
316
int
named_result_sets
;
317
}
bend_initrequest
;
318
320
typedef
struct
bend_initresult
321
{
322
int
errcode
;
/* 0==OK */
323
char
*
errstring
;
/* system error string or NULL */
324
void
*
handle
;
/* private handle to the backend module */
325
}
bend_initresult
;
326
328
typedef
struct
statserv_options_block
329
{
330
int
dynamic
;
331
int
threads
;
332
int
one_shot
;
333
char
apdufile
[
ODR_MAXNAME
+1];
334
char
logfile
[
ODR_MAXNAME
+1];
335
char
default_listen
[1024];
336
enum
oid_proto
default_proto
;
337
int
idle_timeout
;
338
int
maxrecordsize
;
339
char
configname
[
ODR_MAXNAME
+1];
340
char
setuid
[
ODR_MAXNAME
+1];
341
void (*
bend_start
)(
struct
statserv_options_block
*p);
342
void (*
bend_stop
)(
struct
statserv_options_block
*p);
343
int (*
options_func
)(
int
argc,
char
**argv);
344
int (*
check_ip
)(
void
*cd,
const
char
*addr,
int
len,
int
type
);
345
char
daemon_name
[128];
346
int
inetd
;
348
void
*
handle
;
349
bend_initresult
*(*bend_init)(
bend_initrequest
*r);
350
void (*
bend_close
)(
void
*
handle
);
351
#ifdef WIN32
352
/* We only have these members for the windows version */
353
/* They seemed a bit large to have them there in general */
354
char
service_name[128];
355
char
app_name[128];
356
char
service_dependencies[128];
357
char
service_display_name[128];
358
#endif
/* WIN32 */
359
struct
bend_soap_handler *
soap_handlers
;
360
char
pid_fname
[128];
361
int
background
;
362
char
cert_fname
[128];
363
char
xml_config
[128];
364
int
keepalive
;
365
}
statserv_options_block
;
366
367
YAZ_EXPORT
int
statserv_main
(
368
int
argc,
char
**argv,
369
bend_initresult
*(*
bend_init
)(
bend_initrequest
*r),
370
void
(*
bend_close
)(
void
*handle));
371
372
YAZ_EXPORT
statserv_options_block
*
statserv_getcontrol
(
void
);
373
YAZ_EXPORT
void
statserv_setcontrol
(
statserv_options_block
*block);
374
YAZ_EXPORT
int
check_ip_tcpd
(
void
*cd,
const
char
*addr,
int
len,
int
type
);
375
376
YAZ_EXPORT
int
bend_assoc_is_alive
(bend_association assoc);
377
378
YAZ_END_CDECL
379
380
#endif
381
/*
382
* Local variables:
383
* c-basic-offset: 4
384
* c-file-style: "Stroustrup"
385
* indent-tabs-mode: nil
386
* End:
387
* vim: shiftwidth=4 tabstop=8 expandtab
388
*/
389
Generated on Wed May 15 2013 14:55:30 for YAZ by
1.8.1.2