]> git.ozlabs.org Git - ccan/blobdiff - ccan/tdb2/doc/design.lyx
tdb2: feature support.
[ccan] / ccan / tdb2 / doc / design.lyx
index bb499482e5c077385fadfc1b82ed7c14577bedb5..af94f6b9c1b1a84ae49d4997bbd6affbea964a85 100644 (file)
@@ -698,7 +698,13 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1298979572
 Incomplete; nesting flag is still defined as per tdb1.
+\change_inserted 0 1298979584
+Complete; the nesting flag has been removed.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection
@@ -779,9 +785,15 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1300360559
 Incomplete.
  TDB_VOLATILE still defined, but implementation should fail on unknown flags
  to be future-proof.
+\change_inserted 0 1300360588
+Complete.
+ Unknown flags cause tdb_open() to fail as well, so they can be detected
+ at runtime.
 \end_layout
 
 \begin_layout Subsection
@@ -870,14 +882,32 @@ Proposed Solution
 
 \begin_layout Standard
 Reachitecting the API to include a tdb_errcode pointer would be a great
- deal of churn; we are better to guarantee that the tdb_errcode is per-thread
- so the current programming model can be maintained.
+ deal of churn
+\change_inserted 0 1298979557
+, but fortunately most functions return 0 on success and -1 on error: we
+ can change these to return 0 on success and a negative error code on error,
+ and the API remains similar to previous.
+ The tdb_fetch, tdb_firstkey and tdb_nextkey functions need to take a TDB_DATA
+ pointer and return an error code.
+ It is also simpler to have tdb_nextkey replace its key argument in place,
+ freeing up any old .dptr.
+\end_layout
+
+\begin_layout Standard
+
+\change_deleted 0 1298979438
+; we are better to guarantee that the tdb_errcode is per-thread so the current
+ programming model can be maintained.
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1298979438
 This requires dynamic per-thread allocations, which is awkward with POSIX
  threads (pthread_key_create space is limited and we cannot simply allocate
  a key for every TDB).
+\change_unchanged
+
 \end_layout
 
 \begin_layout Standard
@@ -903,7 +933,13 @@ Status
 \end_layout
 
 \begin_layout Standard
-Incomplete.
+Incomplete
+\change_inserted 0 1298979681
+; API has been changed but thread safety has not been implemented.
+\change_deleted 0 1298979669
+.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection
@@ -1246,7 +1282,13 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1300360712
 Incomplete.
+\change_inserted 0 1300360716
+Complete.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection
@@ -1291,7 +1333,13 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1298979699
 Incomplete, TDB_CLEAR_IF_FIRST still defined, but not implemented.
+\change_inserted 0 1298979700
+Complete.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection
@@ -1350,7 +1398,13 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1300360753
 Incomplete.
+\change_inserted 0 1300360754
+Complete.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection
@@ -1497,7 +1551,13 @@ Status
 \end_layout
 
 \begin_layout Standard
+
+\change_deleted 0 1298979837
 Incomplete; TDB_CLEAR_IF_FIRST still defined, but does nothing.
+\change_inserted 0 1298979837
+Complete.
+\change_unchanged
+
 \end_layout
 
 \begin_layout Subsection