/* 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:
* THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE.
*/
-/**
+/**
* \file backend.h
* \brief Header for GFS
*
#include <yaz/oid_db.h>
YAZ_BEGIN_CDECL
-
-typedef struct request *bend_request;
+
typedef struct association *bend_association;
/** \brief Information for Z39.50/SRU search handler
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) */
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. */
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) */
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
char *errstring;
char *scanClause; /**< CQL scan clause */
char *setname; /**< Scan in result set (NULL if omitted) */
+ Z_SRW_extra_arg *extra_args; /**< SRU extra request parameters (input) */
+ char *extra_response_data; /**< SRW extra XML response (output) */
} bend_scan_rr;
/** \brief Information for SRU record update handler */
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 */
{
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 */
ODR stream;
ODR decode;
ODR print;
- bend_request request;
bend_association association;
} bend_segment_rr;
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;
+
+ /** \brief character set and language negotiation
- see include/yaz/z-charneg.h
+ 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).
*/
void *handle; /* private handle to the backend module */
} bend_initresult;
-YAZ_EXPORT void bend_request_send (bend_association a, bend_request req,
- Z_APDU *res);
-
-YAZ_EXPORT bend_request bend_request_mk (bend_association a);
-
-YAZ_EXPORT void bend_request_destroy (bend_request *req);
-
-YAZ_EXPORT Z_ReferenceId *bend_request_getid (ODR odr, bend_request req);
-YAZ_EXPORT int bend_backend_respond (bend_association a, bend_request req);
-YAZ_EXPORT void bend_request_setdata(bend_request r, void *p);
-YAZ_EXPORT void *bend_request_getdata(bend_request r);
-
/** \brief control block for server */
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 */
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);