48c4f01921a0325f40953bf03e9d996892dc23ad
[yaz-moved-to-github.git] / include / yaz / srw.h
1 /*
2  * Copyright (c) 2002-2003, Index Data.
3  * See the file LICENSE for details.
4  *
5  * $Id: srw.h,v 1.12 2004-01-07 20:36:44 adam Exp $
6  */
7
8 #ifndef YAZ_SRW_H
9 #define YAZ_SRW_H
10
11 #include <yaz/soap.h>
12 #include <yaz/zgdu.h>
13
14 YAZ_BEGIN_CDECL
15
16 typedef struct {
17     char *recordSchema;
18     int recordPacking;
19 #define Z_SRW_recordPacking_string 0
20 #define Z_SRW_recordPacking_XML 1
21     char *recordData_buf;
22     int recordData_len;
23     int *recordPosition;
24 } Z_SRW_record;
25
26 typedef struct {
27     int  *code;
28     char *details;
29 } Z_SRW_diagnostic;
30     
31 typedef struct {
32
33 #define Z_SRW_query_type_cql  1
34 #define Z_SRW_query_type_xcql 2
35 #define Z_SRW_query_type_pqf  3
36     int query_type;
37     union {
38         char *cql;
39         char *xcql;
40         char *pqf;
41     } query;
42
43 #define Z_SRW_sort_type_none 1
44 #define Z_SRW_sort_type_sort 2
45 #define Z_SRW_sort_type_xSort 3
46     int sort_type;
47     union {
48         char *none;
49         char *sortKeys;
50         char *xSortKeys;
51     } sort;
52     int *startRecord;
53     int *maximumRecords;
54     char *recordSchema;
55     char *recordPacking;
56     char *recordXPath;
57     char *database;
58     char *stylesheet;
59     int *resultSetTTL;
60 } Z_SRW_searchRetrieveRequest;
61
62 typedef struct {
63     int * numberOfRecords;
64     char * resultSetId;
65     int * resultSetIdleTime;
66     
67     Z_SRW_record *records;
68     int num_records;
69
70     Z_SRW_diagnostic *diagnostics;
71     int num_diagnostics;
72     int *nextRecordPosition;
73 } Z_SRW_searchRetrieveResponse;
74
75 typedef struct {
76     char *recordPacking;
77     char *database;
78     char *stylesheet;
79 } Z_SRW_explainRequest;
80
81 typedef struct {
82     Z_SRW_record record;
83     Z_SRW_diagnostic *diagnostics;
84     int num_diagnostics;
85 } Z_SRW_explainResponse;
86     
87 typedef struct {
88     char *scanClause;
89     int *responsePosition;
90     int *maximumTerms;
91     char *stylesheet;
92     char *database;
93 } Z_SRW_scanRequest;
94
95 typedef struct {
96     char *value;
97     int *numberOfRecords;
98     char *displayTerm;
99 } Z_SRW_scanTerm;
100
101 typedef struct {
102     Z_SRW_scanTerm *terms;
103     int num_terms;
104     Z_SRW_diagnostic *diagnostics;
105     int num_diagnostics;
106 } Z_SRW_scanResponse;
107
108 #define Z_SRW_searchRetrieve_request  1
109 #define Z_SRW_searchRetrieve_response 2
110 #define Z_SRW_explain_request 3
111 #define Z_SRW_explain_response 4
112 #define Z_SRW_scan_request 5
113 #define Z_SRW_scan_response 6
114
115 typedef struct {
116     int which;
117     union {
118         Z_SRW_searchRetrieveRequest *request;
119         Z_SRW_searchRetrieveResponse *response;
120         Z_SRW_explainRequest *explain_request;
121         Z_SRW_explainResponse *explain_response;
122         Z_SRW_scanRequest *scan_request;
123         Z_SRW_scanResponse *scan_response;
124     } u;
125     char *srw_version;
126 } Z_SRW_PDU;
127
128 YAZ_EXPORT int yaz_srw_codec(ODR o, void * pptr,
129                              Z_SRW_PDU **handler_data,
130                              void *client_data, const char *ns);
131 YAZ_EXPORT Z_SRW_PDU *yaz_srw_get(ODR o, int which);
132
133 YAZ_EXPORT const char *yaz_diag_srw_str (int code);
134
135 YAZ_EXPORT int yaz_diag_bib1_to_srw (int bib1_code);
136
137 YAZ_EXPORT int yaz_diag_srw_to_bib1(int srw_code);
138
139 YAZ_EXPORT char *yaz_uri_val(const char *path, const char *name, ODR o);
140 YAZ_EXPORT void yaz_uri_val_int(const char *path, const char *name,
141                                 ODR o, int **intp);
142 YAZ_EXPORT int yaz_srw_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
143                               Z_SOAP **soap_package, ODR decode, char **charset);
144 YAZ_EXPORT int yaz_sru_decode(Z_HTTP_Request *hreq, Z_SRW_PDU **srw_pdu,
145                               Z_SOAP **soap_package, ODR decode, char **charset);
146 YAZ_END_CDECL
147
148 #endif