diff --git a/bzz/localstore.go b/bzz/localstore.go new file mode 100644 index 0000000000..d5689b5245 --- /dev/null +++ b/bzz/localstore.go @@ -0,0 +1,29 @@ +// localstore.go +package bzz + +type localStore struct { + memStore *memStore + dbStore *dbStore +} + +// localStore is itself a chunk store , to stores a chunk only +// its integrity is checked ? +func (self *localStore) Put(chunk *Chunk) { + self.memStore.Put(chunk) + self.dbStore.Put(chunk) +} + +// Get(chunk *Chunk) looks up a chunk in the local stores +// This method is blocking until the chunk is retrieved so additional timeout is needed to wrap this call +func (self *localStore) Get(key Key) (chunk *Chunk, err error) { + chunk, err = self.memStore.Get(key) + if err == nil { + return + } + chunk, err = self.dbStore.Get(key) + if err != nil { + return + } + self.memStore.Put(chunk) + return +}