struct odb_write_stream *stream, size_t len,
struct object_id *oid)
{
- return odb_source_loose_write_stream(odb->sources, stream, len, oid);
+ return odb_source_write_object_stream(odb->sources, stream, len, oid);
}
struct object_database *odb_new(struct repository *repo,
oid, compat_oid, flags);
}
+static int odb_source_files_write_object_stream(struct odb_source *source,
+ struct odb_write_stream *stream,
+ size_t len,
+ struct object_id *oid)
+{
+ return odb_source_loose_write_stream(source, stream, len, oid);
+}
+
struct odb_source_files *odb_source_files_new(struct object_database *odb,
const char *path,
bool local)
files->base.for_each_object = odb_source_files_for_each_object;
files->base.freshen_object = odb_source_files_freshen_object;
files->base.write_object = odb_source_files_write_object;
+ files->base.write_object_stream = odb_source_files_write_object_stream;
/*
* Ideally, we would only ever store absolute paths in the source. This
struct object_id;
struct object_info;
struct odb_read_stream;
+struct odb_write_stream;
/*
* A callback function that can be used to iterate through objects. If given,
struct object_id *oid,
struct object_id *compat_oid,
unsigned flags);
+
+ /*
+ * This callback is expected to persist the given object stream into
+ * the object source.
+ *
+ * The resulting object ID shall be written into the out pointer. The
+ * callback is expected to return 0 on success, a negative error code
+ * otherwise.
+ */
+ int (*write_object_stream)(struct odb_source *source,
+ struct odb_write_stream *stream, size_t len,
+ struct object_id *oid);
};
/*
compat_oid, flags);
}
+/*
+ * Write an object into the object database source via a stream. The overall
+ * length of the object must be known in advance.
+ *
+ * Return 0 on success, a negative error code otherwise. Populates the given
+ * out pointer for the object ID.
+ */
+static inline int odb_source_write_object_stream(struct odb_source *source,
+ struct odb_write_stream *stream,
+ size_t len,
+ struct object_id *oid)
+{
+ return source->write_object_stream(source, stream, len, oid);
+}
+
#endif