-/* $Id: recctrl.h,v 1.39 2007-11-30 12:19:08 adam Exp $
- Copyright (C) 1995-2007
- Index Data ApS
-
-This file is part of the Zebra server.
+/* This file is part of the Zebra server.
+ Copyright (C) Index Data
Zebra is free software; you can redistribute it and/or modify it under
the terms of the GNU General Public License as published by the Free
/** \brief record reader stream */
struct ZebraRecStream {
/** client data */
- void *fh;
+ 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);
+ off_t (*tellf)(struct ZebraRecStream *s);
/** \brief set and get of record position */
- off_t (*endf)(struct ZebraRecStream *s, off_t *offset);
+ 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,
- action_update /* insert or replace as needed */
+ /** insert or replace */
+ action_update,
+ /** delete record (ignore if it does not exist) */
+ action_a_delete
};
/** \brief record extract for indexing */
int recordSize; /* size of record in bytes */
char *fname; /* name of file (or NULL if internal) */
data1_handle dh;
-
+
/* response */
const Odr_oid * output_format; /* output format OID */
void * rec_buf;
int rec_len;
int diagnostic;
char * addinfo;
+
+ /* special fetch to be included in retrieved response (say snippets) */
+ void *handle;
+ int (*special_fetch)(void *handle, const char *esn,
+ const Odr_oid *input_format,
+ const Odr_oid **output_format,
+ WRBUF result, WRBUF addinfo);
};
typedef struct recType *RecType;
/*
* Local variables:
* c-basic-offset: 4
+ * c-file-style: "Stroustrup"
* indent-tabs-mode: nil
* End:
* vim: shiftwidth=4 tabstop=8 expandtab