YAZ 5.35.1
backend.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 */
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
45
47
80
96
117
126
131
133typedef struct bend_scan_rr {
135 char **basenames;
146 /* scan term entries. The called handler does not have
147 to allocate this. Size of entries is num_entries (see above) */
153 char *setname;
157
180
192
208
210typedef struct bend_esrequest_rr
211{
214
215 ODR stream; /* encoding stream */
216 ODR decode; /* decoding stream */
217 ODR print; /* printing stream */
218 Z_ReferenceId *referenceId;/* reference ID */
220 int errcode; /* 0==success, -1==accepted, >0 = failure */
221 char *errstring; /* system error string or NULL */
225
234
245
319
321typedef struct bend_initresult
322{
323 int errcode; /* 0==OK */
324 char *errstring; /* system error string or NULL */
325 void *handle; /* private handle to the backend module */
327
328#define BEND_NAME_MAX 1024
329
332{
345 int (*options_func)(int argc, char **argv);
346 int (*check_ip)(void *cd, const char *addr, int len, int type);
348 int inetd;
350 void *handle;
352 void (*bend_close)(void *handle);
353#ifdef WIN32
354 /* We only have these members for the windows version */
355 /* They seemed a bit large to have them there in general */
356 char service_name[BEND_NAME_MAX];
357 char app_name[BEND_NAME_MAX];
358 char service_dependencies[BEND_NAME_MAX];
359 char service_display_name[BEND_NAME_MAX];
360#endif /* WIN32 */
367
368YAZ_EXPORT int statserv_main(
369 int argc, char **argv,
371 void (*bend_close)(void *handle));
372
374YAZ_EXPORT void statserv_setcontrol(statserv_options_block *block);
375YAZ_EXPORT int check_ip_tcpd(void *cd, const char *addr, int len, int type);
376
377YAZ_EXPORT int bend_assoc_is_alive(bend_association assoc);
378
380
381#endif
382/*
383 * Local variables:
384 * c-basic-offset: 4
385 * c-file-style: "Stroustrup"
386 * indent-tabs-mode: nil
387 * End:
388 * vim: shiftwidth=4 tabstop=8 expandtab
389 */
390
int statserv_main(int argc, char **argv, bend_initresult *(*bend_init)(bend_initrequest *r), void(*bend_close)(void *handle))
Definition statserv.c:1504
int bend_assoc_is_alive(bend_association assoc)
Definition seshigh.c:3550
void statserv_setcontrol(statserv_options_block *block)
Definition statserv.c:1235
statserv_options_block * statserv_getcontrol(void)
Definition statserv.c:1215
int check_ip_tcpd(void *cd, const char *addr, int len, int type)
Definition tcpdchk.c:56
struct association * bend_association
Definition backend.h:46
bend_scan_status
Definition backend.h:127
@ BEND_SCAN_SUCCESS
Definition backend.h:128
@ BEND_SCAN_PARTIAL
Definition backend.h:129
#define BEND_NAME_MAX
Definition backend.h:328
enum l_file_type type
Definition log.c:47
nmem_int_t Odr_int
Definition odr.h:47
Header for OID database.
oid_proto
Definition oid_util.h:45
short Odr_oid
Definition oid_util.h:42
Header for Z39.50 Protocol.
Header for SRW/SRU.
structure for all known EXTERNALs
Definition prt-ext.h:59
Information for Z39.50 delete result set handler.
Definition backend.h:182
Z_ReferenceId * referenceId
Definition backend.h:186
int delete_status
Definition backend.h:187
char ** setnames
Definition backend.h:185
int * statuses
Definition backend.h:188
Information for Z39.50 extended services handler.
Definition backend.h:211
bend_association association
Definition backend.h:219
Z_External * taskPackageExt
Definition backend.h:223
Z_ExtendedServicesRequest * esr
Definition backend.h:213
Z_ReferenceId * referenceId
Definition backend.h:218
Z_TaskPackage * taskPackage
Definition backend.h:222
Information for SRU Explain handler.
Definition backend.h:236
char * explain_buf
Definition backend.h:240
void * server_node_ptr
Definition backend.h:243
char * database
Definition backend.h:241
char * schema
Definition backend.h:242
Information for fetch record handler.
Definition backend.h:98
char * basename
Definition backend.h:107
char * record
Definition backend.h:109
Odr_oid * request_format
Definition backend.h:102
int last_in_set
Definition backend.h:110
Z_RecordComposition * comp
Definition backend.h:103
Odr_oid * output_format
Definition backend.h:111
char * schema
Definition backend.h:115
char * setname
Definition backend.h:99
int surrogate_flag
Definition backend.h:114
char * errstring
Definition backend.h:113
Z_ReferenceId * referenceId
Definition backend.h:101
Information for the Init handler.
Definition backend.h:253
int(* bend_scan)(void *handle, bend_scan_rr *rr)
Z39.50 scan handler.
Definition backend.h:306
int records_in_same_charset
whether query_charset also applies to records
Definition backend.h:287
ODR decode
decoding stream (use stream for results)
Definition backend.h:261
Z_CharSetandLanguageNegotiation * charneg_request
character set and language negotiation
Definition backend.h:271
int(* bend_search)(void *handle, bend_search_rr *rr)
SRU/Z39.50 search handler.
Definition backend.h:296
int(* bend_fetch)(void *handle, bend_fetch_rr *rr)
SRU/Z39.50 fetch handler.
Definition backend.h:298
int named_result_sets
whether named result sets are supported (0=disable, 1=enable)
Definition backend.h:317
Z_External * charneg_response
character negotiation response
Definition backend.h:274
int(* bend_srw_scan)(void *handle, bend_scan_rr *rr)
SRU scan handler.
Definition backend.h:312
char * implementation_name
Definition backend.h:290
Z_ReferenceId * referenceId
reference ID
Definition backend.h:263
Z_IdAuthentication * auth
user/name/password to be read
Definition backend.h:255
int(* bend_segment)(void *handle, bend_segment_rr *rr)
Z39.50 segment facility handler.
Definition backend.h:308
int(* bend_srw_update)(void *handle, bend_update_rr *rr)
SRU record update handler.
Definition backend.h:314
char * implementation_version
Definition backend.h:291
int(* bend_explain)(void *handle, bend_explain_rr *rr)
SRU explain handler.
Definition backend.h:310
int(* bend_sort)(void *handle, bend_sort_rr *rr)
Z39.50 sort handler.
Definition backend.h:294
ODR stream
encoding stream (for results)
Definition backend.h:257
char * implementation_id
Definition backend.h:289
char * peer_name
peer address of client
Definition backend.h:265
char * query_charset
character set (encoding) for query terms
Definition backend.h:280
int(* bend_esrequest)(void *handle, bend_esrequest_rr *rr)
Z39.50 extended services handler.
Definition backend.h:302
int(* bend_present)(void *handle, bend_present_rr *rr)
SRU/Z39.50 present handler.
Definition backend.h:300
int(* bend_delete)(void *handle, bend_delete_rr *rr)
Z39.50 delete result set handler.
Definition backend.h:304
ODR print
printing stream
Definition backend.h:259
result for init handler (must be filled by handler)
Definition backend.h:322
void * handle
Definition backend.h:325
char * errstring
Definition backend.h:324
Information for present handler. Does not replace bend_fetch.
Definition backend.h:82
Z_RecordComposition * comp
Definition backend.h:88
char * errstring
Definition backend.h:94
bend_association association
Definition backend.h:91
char * setname
Definition backend.h:83
Odr_oid * format
Definition backend.h:86
Z_ReferenceId * referenceId
Definition backend.h:87
Information for SRU / Z39.50 scan handler.
Definition backend.h:133
char * scanClause
Definition backend.h:152
Z_SRW_extra_arg * extra_args
Definition backend.h:154
Z_ReferenceId * referenceId
Definition backend.h:137
Z_AttributesPlusTerm * term
Definition backend.h:138
int num_entries
Definition backend.h:144
bend_scan_status status
Definition backend.h:149
int term_position
Definition backend.h:143
char ** basenames
Definition backend.h:135
char * errstring
Definition backend.h:151
int * step_size
Definition backend.h:142
char * setname
Definition backend.h:153
struct scan_entry * entries
Definition backend.h:148
char * extra_response_data
Definition backend.h:155
int num_bases
Definition backend.h:134
Odr_oid * attributeset
Definition backend.h:136
Information for Z39.50/SRU search handler.
Definition backend.h:54
Z_ReferenceId * referenceId
Definition backend.h:59
char ** basenames
Definition backend.h:58
Odr_int hits
Definition backend.h:66
int partial_resultset
Definition backend.h:74
Odr_int present_number
Definition backend.h:78
char * srw_setname
Definition backend.h:71
char * errstring
Definition backend.h:68
int * srw_setnameIdleTime
Definition backend.h:72
Z_OtherInformation * search_input
Definition backend.h:77
char * setname
Definition backend.h:55
int estimated_hit_count
Definition backend.h:73
Z_SRW_extra_arg * extra_args
Definition backend.h:75
char * srw_sortKeys
Definition backend.h:70
Z_OtherInformation * search_info
Definition backend.h:69
int replace_set
Definition backend.h:56
char * extra_response_data
Definition backend.h:76
Z_Query * query
Definition backend.h:60
bend_association association
Definition backend.h:65
Information for Z39.50 segment handler.
Definition backend.h:227
bend_association association
Definition backend.h:232
Z_Segment * segment
Definition backend.h:228
Information for Z39.50 sort handler.
Definition backend.h:195
char * output_setname
Definition backend.h:198
Z_ReferenceId * referenceId
Definition backend.h:202
int sort_status
Definition backend.h:204
int num_input_setnames
Definition backend.h:196
Z_SortKeySpecList * sort_sequence
Definition backend.h:199
char * errstring
Definition backend.h:206
char ** input_setnames
Definition backend.h:197
Information for SRU record update handler.
Definition backend.h:159
char * extra_response_data
Definition backend.h:175
Z_ReferenceId * referenceId
Definition backend.h:162
char * extra_request_data
Definition backend.h:174
char * details
Definition backend.h:178
char * extra_record_data
Definition backend.h:173
Z_SRW_recordVersion * record_versions
Definition backend.h:168
char * operation_status
Definition backend.h:166
char * operation
Definition backend.h:165
char * record_packing
Definition backend.h:170
char * message
Definition backend.h:177
char * record_schema
Definition backend.h:171
char ** basenames
Definition backend.h:161
char * record_data
Definition backend.h:172
char * record_id
Definition backend.h:167
Definition odr.h:100
Definition odr.h:125
Information for scan entry.
Definition backend.h:119
char * display_term
Definition backend.h:124
char * term
Definition backend.h:120
int errcode
Definition backend.h:122
char * errstring
Definition backend.h:123
Odr_int occurrences
Definition backend.h:121
control block for server
Definition backend.h:332
char daemon_name[BEND_NAME_MAX]
Definition backend.h:347
char apdufile[BEND_NAME_MAX]
Definition backend.h:336
char cert_fname[BEND_NAME_MAX]
Definition backend.h:363
void(* bend_start)(struct statserv_options_block *p)
Definition backend.h:343
char pid_fname[BEND_NAME_MAX]
Definition backend.h:361
void(* bend_stop)(struct statserv_options_block *p)
Definition backend.h:344
enum oid_proto default_proto
Definition backend.h:338
char xml_config[BEND_NAME_MAX]
Definition backend.h:364
char setuid[BEND_NAME_MAX]
Definition backend.h:342
char logfile[BEND_NAME_MAX]
Definition backend.h:337
char configname[BEND_NAME_MAX]
Definition backend.h:341
int(* check_ip)(void *cd, const char *addr, int len, int type)
Definition backend.h:346
void(* bend_close)(void *handle)
Definition backend.h:352
int(* options_func)(int argc, char **argv)
Definition backend.h:345
Header with fundamental macros.
#define YAZ_BEGIN_CDECL
Definition yconfig.h:56
#define YAZ_END_CDECL
Definition yconfig.h:57
void bend_close(void *handle)
Definition ztest.c:1166
bend_initresult * bend_init(bend_initrequest *q)
Definition ztest.c:1129