2 * Public header for ZOOM C.
3 * $Id: zoom.h,v 1.8 2001-12-30 22:21:11 adam Exp $
6 #include <yaz/yconfig.h>
8 #define ZOOM_EXPORT YAZ_EXPORT
9 #define ZOOM_BEGIN_CDECL YAZ_BEGIN_CDECL
10 #define ZOOM_END_CDECL YAZ_END_CDECL
14 /* ----------------------------------------------------------- */
15 /* the types we use */
17 typedef struct ZOOM_options_p *ZOOM_options;
18 typedef struct ZOOM_query_p *ZOOM_query;
19 typedef struct ZOOM_connection_p *ZOOM_connection;
20 typedef struct ZOOM_resultset_p *ZOOM_resultset;
21 typedef struct ZOOM_task_p *ZOOM_task;
22 typedef struct ZOOM_record_p *ZOOM_record;
23 typedef struct ZOOM_scanset_p *ZOOM_scanset;
25 /* ----------------------------------------------------------- */
28 /* create connection, connect to host, if portnum is 0, then port is
29 read from host string (e.g. myhost:9821) */
31 ZOOM_connection ZOOM_connection_new (const char *host, int portnum);
33 /* create connection, don't connect, apply options */
35 ZOOM_connection ZOOM_connection_create (ZOOM_options options);
37 /* connect given existing connection */
39 void ZOOM_connection_connect(ZOOM_connection c, const char *host,
42 /* destroy connection (close connection also) */
44 void ZOOM_connection_destroy (ZOOM_connection c);
46 /* get/set option for connection */
48 const char *ZOOM_connection_option_get (ZOOM_connection c, const char *key);
51 void ZOOM_connection_option_set (ZOOM_connection c, const char *key,
54 /* return error code (0 == success, failure otherwise). cp
55 holds error string on failure, addinfo holds addititional info (if any)
58 int ZOOM_connection_error (ZOOM_connection c, const char **cp,
59 const char **addinfo);
61 /* returns error code */
63 int ZOOM_connection_errcode (ZOOM_connection c);
64 /* returns error message */
66 const char *ZOOM_connection_errmsg (ZOOM_connection c);
67 /* returns additional info */
69 const char *ZOOM_connection_addinfo (ZOOM_connection c);
71 #define ZOOM_ERROR_NONE 0
72 #define ZOOM_ERROR_CONNECT 10000
73 #define ZOOM_ERROR_MEMORY 10001
74 #define ZOOM_ERROR_ENCODE 10002
75 #define ZOOM_ERROR_DECODE 10003
76 #define ZOOM_ERROR_CONNECTION_LOST 10004
77 #define ZOOM_ERROR_INIT 10005
78 #define ZOOM_ERROR_INTERNAL 10006
79 #define ZOOM_ERROR_TIMEOUT 10007
82 int ZOOM_connection_last_event(ZOOM_connection cs);
84 #define ZOOM_EVENT_NONE 0
85 #define ZOOM_EVENT_CONNECT 1
86 #define ZOOM_EVENT_SEND_DATA 2
87 #define ZOOM_EVENT_RECV_DATA 3
88 #define ZOOM_EVENT_TIMEOUT 4
89 #define ZOOM_EVENT_UNKNOWN 5
90 #define ZOOM_EVENT_SEND_APDU 6
91 #define ZOOM_EVENT_RECV_APDU 7
93 /* ----------------------------------------------------------- */
96 /* create result set given a search */
98 ZOOM_resultset ZOOM_connection_search(ZOOM_connection, ZOOM_query q);
99 /* create result set given PQF query */
101 ZOOM_resultset ZOOM_connection_search_pqf(ZOOM_connection c, const char *q);
103 /* destroy result set */
105 void ZOOM_resultset_destroy(ZOOM_resultset r);
107 /* result set option */
109 const char *ZOOM_resultset_option_get (ZOOM_resultset r, const char *key);
111 void ZOOM_resultset_option_set (ZOOM_resultset r, const char *key, const char *val);
113 /* return size of result set (alias hit count AKA result count) */
115 size_t ZOOM_resultset_size (ZOOM_resultset r);
117 /* retrieve records */
119 void ZOOM_resultset_records (ZOOM_resultset r, ZOOM_record *recs,
120 size_t start, size_t count);
122 /* return record object at pos. Returns 0 if unavailable */
124 ZOOM_record ZOOM_resultset_record (ZOOM_resultset s, size_t pos);
126 /* like ZOOM_resultset_record - but never blocks .. */
128 ZOOM_record ZOOM_resultset_record_immediate (ZOOM_resultset s, size_t pos);
130 /* ----------------------------------------------------------- */
133 /* get record information, in a form given by type */
135 void *ZOOM_record_get (ZOOM_record rec, const char *type, size_t *len);
139 void ZOOM_record_destroy (ZOOM_record rec);
141 /* return copy of record */
143 ZOOM_record ZOOM_record_clone (ZOOM_record srec);
145 /* ----------------------------------------------------------- */
148 /* create search object */
150 ZOOM_query ZOOM_query_create(void);
153 void ZOOM_query_destroy(ZOOM_query s);
154 /* specify prefix query for search */
156 int ZOOM_query_prefix(ZOOM_query s, const char *str);
157 /* specify sort criteria for search */
159 int ZOOM_query_sortby(ZOOM_query s, const char *criteria);
161 /* ----------------------------------------------------------- */
164 ZOOM_scanset ZOOM_connection_scan (ZOOM_connection c, const char *startterm);
167 const char * ZOOM_scanset_term(ZOOM_scanset scan, size_t no, int *occ, size_t *len);
170 size_t ZOOM_scanset_size(ZOOM_scanset scan);
173 void ZOOM_scanset_destroy (ZOOM_scanset scan);
174 /* ----------------------------------------------------------- */
176 typedef const char *(*ZOOM_options_callback)(void *handle, const char *name);
179 ZOOM_options_callback ZOOM_options_set_callback (ZOOM_options opt,
180 ZOOM_options_callback c,
183 ZOOM_options ZOOM_options_create (void);
186 ZOOM_options ZOOM_options_create_with_parent (ZOOM_options parent);
189 const char *ZOOM_options_get (ZOOM_options opt, const char *name);
192 void ZOOM_options_set (ZOOM_options opt, const char *name, const char *v);
195 void ZOOM_options_destroy (ZOOM_options opt);
198 int ZOOM_options_get_bool (ZOOM_options opt, const char *name, int defa);
201 int ZOOM_options_get_int (ZOOM_options opt, const char *name, int defa);
204 void ZOOM_options_addref (ZOOM_options opt);
206 /* ----------------------------------------------------------- */
208 /* poll for events on a number of connections. Returns positive
209 integer if event occurred ; zero if none occurred and no more
210 events are pending. The positive integer specifies the
211 connection for which the event occurred. */
213 int ZOOM_event (int no, ZOOM_connection *cs);