diff options
author | Jakob Unterwurzacher | 2020-08-01 20:47:59 +0200 |
---|---|---|
committer | Jakob Unterwurzacher | 2020-08-01 21:14:10 +0200 |
commit | 13dc7657ba0aac4da3f4b80ba231a919fdfae0f5 (patch) | |
tree | d13781bacb4a02327f519d399e946f83fd13e5c7 /internal/fusefrontend_reverse_v1api/rpath_cache.go | |
parent | dd3d8c100bc9e84c44b2efb55e536b2fc0ded37e (diff) |
v2api/reverse: move old fusefrontend_reverse out of the way
fusefrontend_reverse -> fusefrontend_reverse_v1api
Diffstat (limited to 'internal/fusefrontend_reverse_v1api/rpath_cache.go')
-rw-r--r-- | internal/fusefrontend_reverse_v1api/rpath_cache.go | 45 |
1 files changed, 45 insertions, 0 deletions
diff --git a/internal/fusefrontend_reverse_v1api/rpath_cache.go b/internal/fusefrontend_reverse_v1api/rpath_cache.go new file mode 100644 index 0000000..221f578 --- /dev/null +++ b/internal/fusefrontend_reverse_v1api/rpath_cache.go @@ -0,0 +1,45 @@ +package fusefrontend_reverse + +import ( + "sync" +) + +// rPathCacheContainer is a simple one entry path cache. Because the dirIV +// is generated deterministically from the directory path, there is no need +// to ever invalidate entries. +type rPathCacheContainer struct { + sync.Mutex + // Relative ciphertext path to the directory + cPath string + // Relative plaintext path + pPath string + // Directory IV of the directory + dirIV []byte +} + +// lookup relative ciphertext path "cPath". Returns dirIV, relative +// plaintext path. +func (c *rPathCacheContainer) lookup(cPath string) ([]byte, string) { + c.Lock() + defer c.Unlock() + if cPath == c.cPath { + // hit + return c.dirIV, c.pPath + } + // miss + return nil, "" +} + +// store - write entry for the directory at relative ciphertext path "cPath" +// into the cache. +// "dirIV" = directory IV of the directory, "pPath" = relative plaintext path +func (c *rPathCacheContainer) store(cPath string, dirIV []byte, pPath string) { + c.Lock() + defer c.Unlock() + c.cPath = cPath + c.dirIV = dirIV + c.pPath = pPath +} + +// rPathCache: see rPathCacheContainer above for a detailed description +var rPathCache rPathCacheContainer |