From 926fb144f2ea34300e73107b2aba55dc6eae1214 Mon Sep 17 00:00:00 2001 From: Newnius Date: Tue, 4 Jun 2019 11:08:49 +0800 Subject: [PATCH] add keep alive support --- src/resource_pool.go | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/src/resource_pool.go b/src/resource_pool.go index f1181af..dc9c554 100644 --- a/src/resource_pool.go +++ b/src/resource_pool.go @@ -10,9 +10,19 @@ type ResourcePool struct { nodes map[string]NodeStatus history []PoolStatus + + heartBeat map[string]time.Time } func (pool *ResourcePool) start() { + /* check dead nodes */ + for k, v := range pool.heartBeat { + if v.Add(time.Second * 30).Before(time.Now()) { + delete(pool.nodes, k) + } + } + + /* save pool status periodically */ go func() { /* waiting for data */ pool.history = []PoolStatus{} @@ -79,6 +89,7 @@ func (pool *ResourcePool) update(node NodeStatus) { } } pool.nodes[node.ClientID] = node + pool.heartBeat[node.ClientID] = time.Now() //log.Println(pool.nodes) }