From cab7e6000e20413d697d07a1a6b2abcc85dfc2e1 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 19 Nov 2014 16:35:57 +0100
Subject: Increased coverage

---
 ptrie/cache.go | 42 ++++++++++++++++++++++++++++++++++++++++++
 1 file changed, 42 insertions(+)
 create mode 100644 ptrie/cache.go

(limited to 'ptrie/cache.go')

diff --git a/ptrie/cache.go b/ptrie/cache.go
new file mode 100644
index 000000000..8efdb047b
--- /dev/null
+++ b/ptrie/cache.go
@@ -0,0 +1,42 @@
+package ptrie
+
+type Backend interface {
+	Get([]byte) []byte
+	Set([]byte, []byte)
+}
+
+type Cache struct {
+	store   map[string][]byte
+	backend Backend
+}
+
+func NewCache(backend Backend) *Cache {
+	return &Cache{make(map[string][]byte), backend}
+}
+
+func (self *Cache) Get(key []byte) []byte {
+	data := self.store[string(key)]
+	if data == nil {
+		data = self.backend.Get(key)
+	}
+
+	return data
+}
+
+func (self *Cache) Set(key []byte, data []byte) {
+	self.store[string(key)] = data
+}
+
+func (self *Cache) Flush() {
+	for k, v := range self.store {
+		self.backend.Set([]byte(k), v)
+	}
+
+	// This will eventually grow too large. We'd could
+	// do a make limit on storage and push out not-so-popular nodes.
+	//self.Reset()
+}
+
+func (self *Cache) Reset() {
+	self.store = make(map[string][]byte)
+}
-- 
cgit v1.2.3


From b05e63c34d335e65c8c76ed9a9401b74170db617 Mon Sep 17 00:00:00 2001
From: obscuren <geffobscura@gmail.com>
Date: Wed, 19 Nov 2014 16:56:01 +0100
Subject: Added paranoia check for tries

---
 ptrie/cache.go | 10 +++++-----
 1 file changed, 5 insertions(+), 5 deletions(-)

(limited to 'ptrie/cache.go')

diff --git a/ptrie/cache.go b/ptrie/cache.go
index 8efdb047b..721dc4cf6 100644
--- a/ptrie/cache.go
+++ b/ptrie/cache.go
@@ -1,8 +1,8 @@
 package ptrie
 
 type Backend interface {
-	Get([]byte) []byte
-	Set([]byte, []byte)
+	Get([]byte) ([]byte, error)
+	Put([]byte, []byte)
 }
 
 type Cache struct {
@@ -17,19 +17,19 @@ func NewCache(backend Backend) *Cache {
 func (self *Cache) Get(key []byte) []byte {
 	data := self.store[string(key)]
 	if data == nil {
-		data = self.backend.Get(key)
+		data, _ = self.backend.Get(key)
 	}
 
 	return data
 }
 
-func (self *Cache) Set(key []byte, data []byte) {
+func (self *Cache) Put(key []byte, data []byte) {
 	self.store[string(key)] = data
 }
 
 func (self *Cache) Flush() {
 	for k, v := range self.store {
-		self.backend.Set([]byte(k), v)
+		self.backend.Put([]byte(k), v)
 	}
 
 	// This will eventually grow too large. We'd could
-- 
cgit v1.2.3