@@ -4,6 +4,7 @@
#include "odb-helper.h"
#include "run-command.h"
#include "sha1-lookup.h"
+#include "fetch-object.h"
struct odb_helper *odb_helper_new(const char *name, int namelen)
{
@@ -14,3 +15,17 @@ struct odb_helper *odb_helper_new(const char *name, int namelen)
return o;
}
+
+int odb_helper_get_direct(struct odb_helper *o,
+ const struct object_id *oids,
+ int oid_nr)
+{
+ int res;
+ uint64_t start = getnanotime();
+
+ res = fetch_objects(o->remote, oids, oid_nr);
+
+ trace_performance_since(start, "odb_helper_get_direct");
+
+ return res;
+}
@@ -15,5 +15,8 @@ struct odb_helper {
};
extern struct odb_helper *odb_helper_new(const char *name, int namelen);
+extern int odb_helper_get_direct(struct odb_helper *o,
+ const struct object_id *oids,
+ int oid_nr);
#endif /* ODB_HELPER_H */
@@ -89,3 +89,20 @@ int has_remote_odb(void)
{
return !!find_odb_helper(NULL);
}
+
+int remote_odb_get_direct(const struct object_id *oids, int oid_nr)
+{
+ struct odb_helper *o;
+
+ trace_printf("trace: remote_odb_get_direct: nr: %d", oid_nr);
+
+ remote_odb_init();
+
+ for (o = helpers; o; o = o->next) {
+ if (odb_helper_get_direct(o, oids, oid_nr) < 0)
+ continue;
+ return 0;
+ }
+
+ return -1;
+}
@@ -3,5 +3,6 @@
extern struct odb_helper *find_odb_helper(const char *remote);
extern int has_remote_odb(void);
+extern int remote_odb_get_direct(const struct object_id *oids, int oid_nr);
#endif /* REMOTE_ODB_H */