]> git.proxmox.com Git - libgit2.git/blobdiff - src/pack-objects.h
New upstream version 1.4.3+dfsg.1
[libgit2.git] / src / pack-objects.h
index 8e7ba7f7837d8e1446a3531f888513a982473914..2faa3ec7f514bc533c0bb2cd9b0a0502c348dfd7 100644 (file)
 
 #include "common.h"
 
-#include "buffer.h"
+#include "str.h"
 #include "hash.h"
 #include "oidmap.h"
 #include "netops.h"
+#include "zstream.h"
+#include "pool.h"
+#include "indexer.h"
 
 #include "git2/oid.h"
+#include "git2/pack.h"
 
 #define GIT_PACK_WINDOW 10 /* number of objects to possibly delta against */
 #define GIT_PACK_DEPTH 50 /* max delta depth */
@@ -25,8 +29,8 @@
 
 typedef struct git_pobject {
        git_oid id;
-       git_otype type;
-       git_off_t offset;
+       git_object_t type;
+       off64_t offset;
 
        size_t size;
 
@@ -39,13 +43,13 @@ typedef struct git_pobject {
                                            * me */
 
        void *delta_data;
-       unsigned long delta_size;
-       unsigned long z_delta_size;
+       size_t delta_size;
+       size_t z_delta_size;
 
-       int written:1,
-           recursing:1,
-           tagged:1,
-           filled:1;
+       unsigned int written:1,
+                    recursing:1,
+                    tagged:1,
+                    filled:1;
 } git_pobject;
 
 struct git_packbuilder {
@@ -53,17 +57,26 @@ struct git_packbuilder {
        git_odb *odb; /* associated object database */
 
        git_hash_ctx ctx;
+       git_zstream zstream;
 
        uint32_t nr_objects,
-                nr_alloc,
-                nr_written,
-                nr_remaining;
+               nr_deltified,
+               nr_written,
+               nr_remaining;
+
+       size_t nr_alloc;
 
        git_pobject *object_list;
 
        git_oidmap *object_ix;
 
+       git_oidmap *walk_objects;
+       git_pool object_pool;
+
+#ifndef GIT_DEPRECATE_HARD
        git_oid pack_oid; /* hash of written pack */
+#endif
+       char *pack_name; /* name of written pack */
 
        /* synchronization objects */
        git_mutex cache_mutex;
@@ -71,17 +84,23 @@ struct git_packbuilder {
        git_cond progress_cond;
 
        /* configs */
-       uint64_t delta_cache_size;
-       uint64_t max_delta_cache_size;
-       uint64_t cache_max_small_delta_size;
-       uint64_t big_file_threshold;
-       uint64_t window_memory_limit;
+       size_t delta_cache_size;
+       size_t max_delta_cache_size;
+       size_t cache_max_small_delta_size;
+       size_t big_file_threshold;
+       size_t window_memory_limit;
 
-       int nr_threads; /* nr of threads to use */
+       unsigned int nr_threads; /* nr of threads to use */
+
+       git_packbuilder_progress progress_cb;
+       void *progress_cb_payload;
+       double last_progress_report_time; /* the time progress was last reported */
 
        bool done;
 };
 
-int git_packbuilder_write_buf(git_buf *buf, git_packbuilder *pb);
+int git_packbuilder__write_buf(git_str *buf, git_packbuilder *pb);
+int git_packbuilder__prepare(git_packbuilder *pb);
+
 
-#endif /* INCLUDE_pack_objects_h__ */
+#endif