Skip to content

Commit

Permalink
remove hex encoding from flatfs
Browse files Browse the repository at this point in the history
  • Loading branch information
whyrusleeping committed Jun 22, 2016
1 parent 66a8b16 commit dfe0659
Show file tree
Hide file tree
Showing 2 changed files with 11 additions and 18 deletions.
25 changes: 9 additions & 16 deletions flatfs.go
Original file line number Diff line number Diff line change
Expand Up @@ -4,7 +4,6 @@
package flatfs

import (
"encoding/hex"
"errors"
"io/ioutil"
"os"
Expand Down Expand Up @@ -33,8 +32,8 @@ var (

type Datastore struct {
path string
// length of the dir splay prefix, in bytes of hex digits
hexPrefixLen int
// length of the dir splay prefix
prefixLen int

// sychronize all writes and directory changes for added safety
sync bool
Expand All @@ -47,21 +46,19 @@ func New(path string, prefixLen int, sync bool) (*Datastore, error) {
return nil, ErrBadPrefixLen
}
fs := &Datastore{
path: path,
// convert from binary bytes to bytes of hex encoding
hexPrefixLen: prefixLen * hex.EncodedLen(1),
sync: sync,
path: path,
prefixLen: prefixLen,
sync: sync,
}
return fs, nil
}

var padding = strings.Repeat("_", maxPrefixLen*hex.EncodedLen(1))
var padding = strings.Repeat("_", maxPrefixLen)

func (fs *Datastore) encode(key datastore.Key) (dir, file string) {
safe := hex.EncodeToString(key.Bytes()[1:])
prefix := (safe + padding)[:fs.hexPrefixLen]
prefix := (key.String() + padding)[:fs.prefixLen]
dir = path.Join(fs.path, prefix)
file = path.Join(dir, safe+extension)
file = path.Join(dir, key.String()+extension)
return dir, file
}

Expand All @@ -70,11 +67,7 @@ func (fs *Datastore) decode(file string) (key datastore.Key, ok bool) {
return datastore.Key{}, false
}
name := file[:len(file)-len(extension)]
k, err := hex.DecodeString(name)
if err != nil {
return datastore.Key{}, false
}
return datastore.NewKey(string(k)), true
return datastore.NewKey(name), true
}

func (fs *Datastore) makePrefixDir(dir string) error {
Expand Down
4 changes: 2 additions & 2 deletions flatfs_test.go
Original file line number Diff line number Diff line change
Expand Up @@ -152,8 +152,8 @@ func TestStorage(t *testing.T) {
defer cleanup()

const prefixLen = 2
const prefix = "7175"
const target = prefix + string(os.PathSeparator) + "71757578.data"
const prefix = "q"
const target = prefix + string(os.PathSeparator) + "quux.data"
fs, err := flatfs.New(temp, prefixLen, false)
if err != nil {
t.Fatalf("New fail: %v\n", err)
Expand Down

0 comments on commit dfe0659

Please sign in to comment.