From 89a5aac6ea3b3573fc97700771af65cb4b44015f Mon Sep 17 00:00:00 2001 From: Jakob Borg Date: Wed, 1 Jan 2014 16:31:04 -0500 Subject: [PATCH] Use gzip compression for index cache --- main.go | 19 +++++++++++++++---- 1 file changed, 15 insertions(+), 4 deletions(-) diff --git a/main.go b/main.go index 7112af475..1eb5588e7 100644 --- a/main.go +++ b/main.go @@ -1,6 +1,7 @@ package main import ( + "compress/gzip" "crypto/sha1" "crypto/tls" "fmt" @@ -295,26 +296,36 @@ func updateLocalModel(m *Model) { } func saveIndex(m *Model) { - name := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) + name := fmt.Sprintf("%x.idx.gz", sha1.Sum([]byte(m.Dir()))) fullName := path.Join(opts.ConfDir, name) idxf, err := os.Create(fullName + ".tmp") if err != nil { return } - protocol.WriteIndex(idxf, m.ProtocolIndex()) + + gzw := gzip.NewWriter(idxf) + + protocol.WriteIndex(gzw, m.ProtocolIndex()) + gzw.Close() idxf.Close() os.Rename(fullName+".tmp", fullName) } func loadIndex(m *Model) { - fname := fmt.Sprintf("%x.idx", sha1.Sum([]byte(m.Dir()))) + fname := fmt.Sprintf("%x.idx.gz", sha1.Sum([]byte(m.Dir()))) idxf, err := os.Open(path.Join(opts.ConfDir, fname)) if err != nil { return } defer idxf.Close() - idx, err := protocol.ReadIndex(idxf) + gzr, err := gzip.NewReader(idxf) + if err != nil { + return + } + defer gzr.Close() + + idx, err := protocol.ReadIndex(gzr) if err != nil { return }