X-Git-Url: http://git.indexdata.com/?p=yaz-moved-to-github.git;a=blobdiff_plain;f=include%2Fyaz%2Fbackend.h;h=dd2806cc04091845342718fc8d6dbaeebe51fad9;hp=2af7a13b81e7733be9ac4918606c4c55cfebb223;hb=dbc40ad16aa82379d2884e106d79c7d83312667a;hpb=f00d2bb50f84184c7682bd31a5361648a909f9f6 diff --git a/include/yaz/backend.h b/include/yaz/backend.h index 2af7a13..dd2806c 100644 --- a/include/yaz/backend.h +++ b/include/yaz/backend.h @@ -1,5 +1,5 @@ /* This file is part of the YAZ toolkit. - * Copyright (C) 1995-2009 Index Data. + * Copyright (C) 1995-2013 Index Data. * All rights reserved. * Redistribution and use in source and binary forms, with or without * modification, are permitted provided that the following conditions are met: @@ -25,7 +25,7 @@ * THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. */ -/** +/** * \file backend.h * \brief Header for GFS * @@ -42,8 +42,7 @@ #include YAZ_BEGIN_CDECL - -typedef struct request *bend_request; + typedef struct association *bend_association; /** \brief Information for Z39.50/SRU search handler @@ -63,9 +62,7 @@ typedef struct { ODR decode; /**< decode stream (input) */ ODR print; /**< print stream (input) */ - bend_request request; /**< GFS request handle (input) */ - bend_association association; /**< GFS association / sesssion (input) */ - int *fd; /**< select fd - not working (output) */ + bend_association association; /**< GFS association / session (input) */ Odr_int hits; /**< hits (output) */ int errcode; /**< Diagnostic code / 0 for no error (output) */ char *errstring; /**< Additional info (output) */ @@ -77,6 +74,8 @@ typedef struct { int partial_resultset; /**< 1=partial results; 0=full (output)*/ Z_SRW_extra_arg *extra_args; /**< SRU extra request parameters (input) */ char *extra_response_data; /**< SRW extra XML response (output) */ + Z_OtherInformation *search_input; /**< extra search info request (input) */ + Odr_int present_number; /**< piggyback present number (>0) (input) */ } bend_search_rr; /** \brief Information for present handler. Does not replace bend_fetch. */ @@ -89,8 +88,7 @@ typedef struct { Z_RecordComposition *comp; /**< Formatting instructions (input) */ ODR stream; /**< encoding stream (input) */ ODR print; /**< printing stream (input) */ - bend_request request; /**< GFS request handle (input) */ - bend_association association; /**< GFS association / sesssion (input) */ + bend_association association; /**< GFS association / session (input) */ int errcode; /**< Diagnostic code / 0 for no error (output) */ char *errstring; /**< Additional info (output) */ @@ -141,8 +139,8 @@ typedef struct bend_scan_rr { ODR stream; /**< encoding stream (input) */ ODR print; /**< printing stream (input) */ - Odr_int *step_size; /**< step size */ - Odr_int term_position; /**< desired index of term in result list/returned */ + int *step_size; /**< step size */ + int term_position; /**< desired index of term in result list/returned */ int num_entries; /**< number of entries requested/returned */ /* scan term entries. The called handler does not have @@ -185,9 +183,9 @@ typedef struct bend_delete_rr { char **setnames; Z_ReferenceId *referenceId; int delete_status; /**< status for the whole operation */ - Odr_int *statuses; /**< status each set - indexed as setnames */ + int *statuses; /**< status each set - indexed as setnames */ ODR stream; - ODR print; + ODR print; } bend_delete_rr; /** \brief Information for Z39.50 sort handler */ @@ -211,12 +209,11 @@ typedef struct bend_esrequest_rr { int ItemNo; Z_ExtendedServicesRequest *esr; - + ODR stream; /* encoding stream */ ODR decode; /* decoding stream */ ODR print; /* printing stream */ Z_ReferenceId *referenceId;/* reference ID */ - bend_request request; bend_association association; int errcode; /* 0==success, -1==accepted, >0 = failure */ char *errstring; /* system error string or NULL */ @@ -229,7 +226,6 @@ typedef struct bend_segment_rr { ODR stream; ODR decode; ODR print; - bend_request request; bend_association association; } bend_segment_rr; @@ -248,40 +244,40 @@ typedef struct { This includes both request information (to be read) and response information which should be -set by the bend_init handler +set by the bend_init handler */ typedef struct bend_initrequest { /** \brief user/name/password to be read */ - Z_IdAuthentication *auth; + Z_IdAuthentication *auth; /** \brief encoding stream (for results) */ ODR stream; /** \brief printing stream */ ODR print; /** \brief decoding stream (use stream for results) */ - ODR decode; + ODR decode; /** \brief reference ID */ Z_ReferenceId *referenceId; /** \brief peer address of client */ - char *peer_name; - - /** \brief character set and language negotiation + char *peer_name; - see include/yaz/z-charneg.h + /** \brief character set and language negotiation + + see include/yaz/z-charneg.h */ Z_CharSetandLanguageNegotiation *charneg_request; /** \brief character negotiation response */ Z_External *charneg_response; - /** \brief character set (encoding) for query terms - + /** \brief character set (encoding) for query terms + This is NULL by default. It should be set to the native character set that the backend assumes for query terms */ - char *query_charset; + char *query_charset; + + /** \brief whehter query_charset also applies to recors - /** \brief whehter query_charset also applies to recors - Is 0 (No) by default. Set to 1 (yes) if records is in the same character set as queries. If in doubt, use 0 (No). */ @@ -335,7 +331,7 @@ typedef struct statserv_options_block char apdufile[ODR_MAXNAME+1]; /**< file for pretty-printed PDUs */ char logfile[ODR_MAXNAME+1]; /**< file for diagnostic output */ char default_listen[1024]; /**< 0 == no default listen */ - enum oid_proto default_proto; /**< PROTO_SR or PROTO_Z3950 */ + enum oid_proto default_proto; /**< PROTO_SR or PROTO_Z3950 */ int idle_timeout; /**< how many minutes to wait before closing */ int maxrecordsize; /**< maximum value for negotiation */ char configname[ODR_MAXNAME+1]; /**< given to the backend in bend_init */ @@ -363,12 +359,14 @@ typedef struct statserv_options_block int background; /**< auto daemon */ char cert_fname[128]; /**< SSL certificate fname */ char xml_config[128]; /**< XML config filename */ + int keepalive; /**< keep alive if HTTP 1.1 (default: 1) */ } statserv_options_block; YAZ_EXPORT int statserv_main( int argc, char **argv, bend_initresult *(*bend_init)(bend_initrequest *r), void (*bend_close)(void *handle)); + YAZ_EXPORT statserv_options_block *statserv_getcontrol(void); YAZ_EXPORT void statserv_setcontrol(statserv_options_block *block); YAZ_EXPORT int check_ip_tcpd(void *cd, const char *addr, int len, int type);