diff options
Diffstat (limited to 'odb/source.h')
| -rw-r--r-- | odb/source.h | 27 |
1 files changed, 27 insertions, 0 deletions
diff --git a/odb/source.h b/odb/source.h index a1fd9dd920..96c906e7a1 100644 --- a/odb/source.h +++ b/odb/source.h @@ -143,6 +143,21 @@ struct odb_source { unsigned flags); /* + * This callback is expected to count objects in the given object + * database source. The callback function does not have to guarantee + * that only unique objects are counted. The result shall be assigned + * to the `out` pointer. + * + * Accepts `enum odb_count_objects_flag` flags to alter the behaviour. + * + * The callback is expected to return 0 on success, or a negative error + * code otherwise. + */ + int (*count_objects)(struct odb_source *source, + enum odb_count_objects_flags flags, + unsigned long *out); + + /* * This callback is expected to freshen the given object so that its * last access time is set to the current time. This is used to ensure * that objects that are recent will not get garbage collected even if @@ -334,6 +349,18 @@ static inline int odb_source_for_each_object(struct odb_source *source, } /* + * Count the number of objects in the given object database source. + * + * Returns 0 on success, a negative error code otherwise. + */ +static inline int odb_source_count_objects(struct odb_source *source, + enum odb_count_objects_flags flags, + unsigned long *out) +{ + return source->count_objects(source, flags, out); +} + +/* * Freshen an object in the object database by updating its timestamp. * Returns 1 in case the object has been freshened, 0 in case the object does * not exist. |
