[Date Prev][Date Next]
[Chronological]
[Thread]
[Top]
tool entry points
- To: openldap-devel@OpenLDAP.org
- Subject: tool entry points
- From: Howard Chu <hyc@symas.com>
- Date: Fri, 09 Sep 2005 00:01:32 -0700
- User-agent: Mozilla/5.0 (Windows; U; Windows NT 5.1; en-US; rv:1.8b4) Gecko/20050829 SeaMonkey/1.1a
While looking at ITS#3979 and implementing the 3 new tool entry points
for backglue, I decided I really dislike this tool API. first/next
iterators always annoy me, there should only be a single iterator
function (you feed it a zero-value to get the process started). And the
use of IDs for the iterator here is problematic because most backends
don't support entryIDs...
I suggest
Entry * tool_entry_get(BackendDB *be, struct berval *dn, void **iter);
int tool_entry_put(BackendDB *be, Entry *e, int flags);
#define TOOL_PUT_ENTRY 1
#define TOOL_PUT_UPDATE 2
tool_entry_put(be, e, TOOL_PUT_ENTRY)
will add a new entry and generate its indices.
tool_entry_put(be, e, TOOL_PUT_ENTRY|TOOL_PUT_UPDATE)
will overwrite an entry - replaces tool_entry_modify.
tool_entry_put(be, e, 0)
will only generate the indices. - replaces tool_entry_reindex.
void *iter = NULL;
struct berval dn;
tool_entry_get(be, NULL, &iter)
return the first (and subsequent) entry in the DB.
tool_entry_get(be, &dn, NULL)
return the named entry.
Since only back-bdb, back-ldbm, and back-null implement all of these
APIs it shouldn't be much work to update them. Abstracting the iterator
will also make it possible to implement for back-ldap (if desired -
still not sure it's a good idea).
--
-- Howard Chu
Chief Architect, Symas Corp. http://www.symas.com
Director, Highland Sun http://highlandsun.com/hyc
OpenLDAP Core Team http://www.openldap.org/project/