diff options
author | Colin Walters <walters@verbum.org> | 2015-01-30 10:13:07 -0500 |
---|---|---|
committer | Colin Walters <walters@verbum.org> | 2015-02-16 10:10:35 -0500 |
commit | 9aa7e30b38f33794fc0fda12fa8b0ef50d9fbab5 (patch) | |
tree | 55c044058d40f45bc33d75cc4515ba5db63709c1 /src/libostree/ostree-rollsum.h | |
parent | 345754a5641525116e85b2b0b9643acbb75a6d16 (diff) | |
download | ostree-9aa7e30b38f33794fc0fda12fa8b0ef50d9fbab5.tar.gz |
deltas: Implement rollsums
This does an rsync-style prepared delta basically. On my test data,
it shaves ~6MB of uncompressed data. Not a huge amount, but I expect
this to be more useful for things like binaries which embed data, etc.
Diffstat (limited to 'src/libostree/ostree-rollsum.h')
-rw-r--r-- | src/libostree/ostree-rollsum.h | 44 |
1 files changed, 44 insertions, 0 deletions
diff --git a/src/libostree/ostree-rollsum.h b/src/libostree/ostree-rollsum.h new file mode 100644 index 00000000..37003d8f --- /dev/null +++ b/src/libostree/ostree-rollsum.h @@ -0,0 +1,44 @@ +/* -*- mode: C; c-file-style: "gnu"; indent-tabs-mode: nil; -*- + * + * Copyright (C) 2015 Colin Walters <walters@verbum.org> + * + * This library is free software; you can redistribute it and/or + * modify it under the terms of the GNU Lesser General Public + * License as published by the Free Software Foundation; either + * version 2 of the License, or (at your option) any later version. + * + * This library is distributed in the hope that it will be useful, + * but WITHOUT ANY WARRANTY; without even the implied warranty of + * MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU + * Lesser General Public License for more details. + * + * You should have received a copy of the GNU Lesser General Public + * License along with this library; if not, write to the + * Free Software Foundation, Inc., 59 Temple Place - Suite 330, + * Boston, MA 02111-1307, USA. + */ + +#pragma once + +#include <gio/gio.h> + +G_BEGIN_DECLS + +typedef struct { + GHashTable *from_rollsums; + GHashTable *to_rollsums; + guint crcmatches; + guint bufmatches; + guint total; + guint64 match_size; + GPtrArray *matches; +} OstreeRollsumMatches; + +OstreeRollsumMatches * +_ostree_compute_rollsum_matches (GBytes *from, + GBytes *to); + +void _ostree_rollsum_matches_free (OstreeRollsumMatches *rollsum); + +G_END_DECLS + |