-bend_deleteresult *bend_delete(void *handle, bend_deleterequest *r, int *fd);
-bend_deleteresult *bend_deleteresponse(void *handle);
+YAZ_EXPORT bend_deleteresult *bend_delete(void *handle,
+ bend_deleterequest *r, int *fd);
+YAZ_EXPORT bend_deleteresult *bend_deleteresponse(void *handle);
+
+YAZ_EXPORT void bend_close(void *handle);
+
+/* sort handler */
+typedef struct bend_sort_rr
+{
+ int num_input_setnames;
+ char **input_setnames;
+ char *output_setname;
+ Z_SortKeySpecList *sort_sequence;
+ ODR stream;
+
+ int sort_status;
+ int errcode;
+ char *errstring;
+} bend_sort_rr;
+
+typedef struct bend_initrequest
+{
+ char *configname;
+ Z_IdAuthentication *auth;
+ ODR stream; /* encoding stream */
+
+ int (*bend_sort) (void *handle, bend_sort_rr *rr);
+ int (*bend_search) (void *handle, bend_search_rr *rr);
+ int (*bend_present) (void *handle, bend_present_rr *rr);
+} bend_initrequest;
+
+typedef struct bend_initresult
+{
+ int errcode; /* 0==OK */
+ char *errstring; /* system error string or NULL */
+ void *handle; /* private handle to the backend module */
+} bend_initresult;
+
+YAZ_EXPORT bend_initresult *bend_init(bend_initrequest *r);
+
+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);