Commit da84fa58 by lancet

more WIP

parent 630da929
package vault
...@@ -23,7 +23,7 @@ type node struct { ...@@ -23,7 +23,7 @@ type node struct {
// Store - корневая структура для хранения данных // Store - корневая структура для хранения данных
type store struct { type store struct {
exchange chan Message // Небуферизованный канал для синхронизации доступа exchange chan Message // Небуферизованный канал для синхронизации доступа
ttl time.Time // Время жизни узла ttl time.Duration // Время жизни узла
head *node head *node
tail *node tail *node
flat map[string]*node // Карта для быстрого доступа к значениям flat map[string]*node // Карта для быстрого доступа к значениям
......
...@@ -3,7 +3,7 @@ package vault ...@@ -3,7 +3,7 @@ package vault
import "errors" import "errors"
// addNode - добавляем новый узел в хвост очереди. // addNode - добавляем новый узел в хвост очереди.
func (store *store) addNode(key, value string) { func (store *store) addNode(key, value string, kind bool) {
prev := store.tail prev := store.tail
store.tail = &node{Key: key, Value: value, Prev: prev, Kind: true} store.tail = &node{Key: key, Value: value, Prev: prev, Kind: true}
prev.Next = store.tail prev.Next = store.tail
...@@ -15,7 +15,7 @@ func (store *store) addNode(key, value string) { ...@@ -15,7 +15,7 @@ func (store *store) addNode(key, value string) {
// Если ключ есть - переносим в хвост. // Если ключ есть - переносим в хвост.
func (store *store) setNode(key, value string) error { func (store *store) setNode(key, value string) error {
if _, ok := store.flat[key]; ok == false { if _, ok := store.flat[key]; ok == false {
store.addNode(key, value) store.addNode(key, value, true)
return nil return nil
} }
// Вместо того, чтобы удалить и пересоздать, просто правим ссылки. // Вместо того, чтобы удалить и пересоздать, просто правим ссылки.
...@@ -37,7 +37,7 @@ func (store *store) setNode(key, value string) error { ...@@ -37,7 +37,7 @@ func (store *store) setNode(key, value string) error {
store.tail = next store.tail = next
} }
store.head = node store.head = node
node.Prev = head node.Next = head
return nil return nil
} }
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or sign in to comment