+/** \brief record reader stream */
+struct ZebraRecStream {
+ /** client data */
+ void *fh;
+ /** \brief read function */
+ int (*readf)(struct ZebraRecStream *s, char *buf, size_t count);
+ /** \brief seek function */
+ off_t (*seekf)(struct ZebraRecStream *s, off_t offset);
+ /** \brief tell function */
+ off_t (*tellf)(struct ZebraRecStream *s);
+ /** \brief set and get of record position */
+ off_t (*endf)(struct ZebraRecStream *s, off_t *offset);
+ /** \brief close and destroy stream */
+ void (*destroy)(struct ZebraRecStream *s);
+};
+
+/** record update action */
+enum zebra_recctrl_action_t {
+ /** insert record (fail if it exists already) */
+ action_insert = 1,
+ /** replace record (fail it it does not exist) */
+ action_replace,
+ /** delete record (fail if it does not exist) */
+ action_delete,
+ /** insert or replace */
+ action_update,
+ /** delete record (ignore if it does not exist) */
+ action_a_delete
+};
+
+/** \brief record extract for indexing */