nmake: ICU_VER helper var
[yaz-moved-to-github.git] / include / yaz / backend.h
index 317943c..e32cd73 100644 (file)
@@ -1,5 +1,5 @@
 /* This file is part of the YAZ toolkit.
- * Copyright (C) 1995-2009 Index Data.
+ * Copyright (C) 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,7 +42,7 @@
 #include <yaz/oid_db.h>
 
 YAZ_BEGIN_CDECL
-    
+
 typedef struct association *bend_association;
 
 /** \brief Information for Z39.50/SRU search handler
@@ -62,7 +62,7 @@ typedef struct {
     ODR decode;                /**< decode stream (input) */
     ODR print;                 /**< print stream (input) */
 
-    bend_association association; /**< GFS association / sesssion (input) */
+    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) */
@@ -74,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. */
@@ -86,7 +88,7 @@ typedef struct {
     Z_RecordComposition *comp; /**< Formatting instructions (input) */
     ODR stream;                /**< encoding stream (input) */
     ODR print;                 /**< printing stream (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) */
@@ -137,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
@@ -149,6 +151,8 @@ typedef struct bend_scan_rr {
     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 */
@@ -181,9 +185,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 */
@@ -207,7 +211,7 @@ typedef struct bend_esrequest_rr
 {
     int ItemNo;
     Z_ExtendedServicesRequest *esr;
-    
+
     ODR stream;                /* encoding stream */
     ODR decode;                /* decoding stream */
     ODR print;                 /* printing stream */
@@ -242,40 +246,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;
+
+    /** \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).
     */
@@ -320,25 +324,26 @@ typedef struct bend_initresult
     void *handle;              /* private handle to the backend module */
 } bend_initresult;
 
+#define BEND_NAME_MAX 1024
+
 /** \brief control block for server */
 typedef struct statserv_options_block
 {
     int dynamic;                  /**< fork on incoming requests */
     int threads;                  /**< use threads */
     int one_shot;                 /**< one session then exit(1) */
-    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 */ 
+    char apdufile[BEND_NAME_MAX]; /**< file for pretty-printed PDUs */
+    char logfile[BEND_NAME_MAX];  /**< file for diagnostic output */
+    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 */
-    char setuid[ODR_MAXNAME+1];     /**< setuid to this user after binding */
+    char configname[BEND_NAME_MAX]; /**< given to the backend in bend_init */
+    char setuid[BEND_NAME_MAX];   /**< setuid to this user after binding */
     void (*bend_start)(struct statserv_options_block *p);
     void (*bend_stop)(struct statserv_options_block *p);
     int (*options_func)(int argc, char **argv);
     int (*check_ip)(void *cd, const char *addr, int len, int type);
-    char daemon_name[128];
+    char daemon_name[BEND_NAME_MAX];
     int inetd;                    /**< Do we use the inet deamon or not */
 
     void *handle;                 /**< Handle */
@@ -347,16 +352,16 @@ typedef struct statserv_options_block
 #ifdef WIN32
     /* We only have these members for the windows version */
     /* They seemed a bit large to have them there in general */
-    char service_name[128];         /**< NT Service Name */
-    char app_name[128];             /**< Application Name */
-    char service_dependencies[128]; /**< The services we are dependent on */
-    char service_display_name[128]; /**< The service display name */
+    char service_name[BEND_NAME_MAX];/**< NT Service Name */
+    char app_name[BEND_NAME_MAX];  /**< Application Name */
+    char service_dependencies[BEND_NAME_MAX];
+    char service_display_name[BEND_NAME_MAX];
 #endif /* WIN32 */
-    struct bend_soap_handler *soap_handlers;
-    char pid_fname[128];            /**< pid fname */
-    int background;                 /**< auto daemon */
-    char cert_fname[128];           /**< SSL certificate fname */
-    char xml_config[128];           /**< XML config filename */
+    char pid_fname[BEND_NAME_MAX]; /**< pid fname */
+    int background;                /**< auto daemon */
+    char cert_fname[BEND_NAME_MAX];/**< SSL certificate fname */
+    char xml_config[BEND_NAME_MAX];/**< XML config filename */
+    int keepalive;                 /**< keep alive if HTTP 1.1 (default: 1) */
 } statserv_options_block;
 
 YAZ_EXPORT int statserv_main(