Browse Source

refactor use time.IsZero

Xiang Li 12 years ago
parent
commit
3f6d6cf4c6
2 changed files with 8 additions and 8 deletions
  1. 5 7
      store/node.go
  2. 3 1
      store/store.go

+ 5 - 7
store/node.go

@@ -9,15 +9,13 @@ import (
 	etcdErr "github.com/coreos/etcd/error"
 )
 
-var (
-	Permanent time.Time
-)
-
 const (
 	normal = iota
 	removed
 )
 
+var Permanent time.Time
+
 // Node is the basic element in the store system.
 // A key-value pair will have a string value
 // A directory will have a children map
@@ -97,7 +95,7 @@ func (n *Node) IsHidden() bool {
 
 // IsPermanent function checks if the node is a permanent one.
 func (n *Node) IsPermanent() bool {
-	return n.ExpireTime.Sub(Permanent) == 0
+	return !n.ExpireTime.IsZero()
 }
 
 // IsExpired function checks if the node has been expired.
@@ -146,7 +144,7 @@ func (n *Node) Write(value string, index uint64, term uint64) *etcdErr.Error {
 }
 
 func (n *Node) ExpirationAndTTL() (*time.Time, int64) {
-	if n.ExpireTime.Sub(Permanent) != 0 {
+	if n.IsPermanent() {
 		return &n.ExpireTime, int64(n.ExpireTime.Sub(time.Now())/time.Second) + 1
 	}
 	return nil, 0
@@ -376,7 +374,7 @@ func (n *Node) UpdateTTL(expireTime time.Time) {
 	}
 
 	n.ExpireTime = expireTime
-	if expireTime.Sub(Permanent) != 0 {
+	if !n.IsPermanent() {
 		n.Expire()
 	}
 }

+ 3 - 1
store/store.go

@@ -37,6 +37,7 @@ type Store interface {
 type store struct {
 	Root           *Node
 	WatcherHub     *watcherHub
+	TTLKeyHeap     *TTLKeyHeap
 	Index          uint64
 	Term           uint64
 	Stats          *Stats
@@ -54,6 +55,7 @@ func newStore() *store {
 	s.Root = newDir(s, "/", UndefIndex, UndefTerm, nil, "", Permanent)
 	s.Stats = newStats()
 	s.WatcherHub = newWatchHub(1000)
+	s.TTLKeyHeap = newTTLKeyHeap()
 	return s
 }
 
@@ -390,7 +392,7 @@ func (s *store) internalCreate(nodePath string, value string, unique bool, repla
 	d.Add(n)
 
 	// Node with TTL
-	if expireTime.Sub(Permanent) != 0 {
+	if !n.IsPermanent() {
 		n.Expire()
 		e.Expiration, e.TTL = n.ExpirationAndTTL()
 	}