|
@@ -23,7 +23,6 @@ const (
|
|
|
RUNNING = iota
|
|
|
PASS
|
|
|
STOP
|
|
|
- OFFLINE //掉线
|
|
|
)
|
|
|
|
|
|
//一个节点
|
|
@@ -33,6 +32,7 @@ type Node struct {
|
|
|
Descript string
|
|
|
Dtype string //节点分类
|
|
|
Status int //状态
|
|
|
+ IsOnline bool //是否在线
|
|
|
Logs *list.List //日志
|
|
|
Command *list.List //命令
|
|
|
LastAccesstime int64 //最后访问时间
|
|
@@ -59,7 +59,7 @@ func (ss *SpiderServer) Join(p com.JoinMsg, r *com.SimpleReturnMsg) error {
|
|
|
Mirror[p.Code] = &Node{Name: p.Name,
|
|
|
Code: p.Code, Descript: p.Descript,
|
|
|
Dtype: p.Dtype, LastAccesstime: lasttime,
|
|
|
- Status: RUNNING, Logs: logs, Command: cmd}
|
|
|
+ Status: RUNNING, IsOnline: true, Logs: logs, Command: cmd}
|
|
|
lock.Unlock()
|
|
|
return nil
|
|
|
}
|
|
@@ -153,13 +153,20 @@ func initRpc(port string) {
|
|
|
func Gc() {
|
|
|
timestamp := time.Now().Unix()
|
|
|
lock.Lock()
|
|
|
- for k, v := range Mirror {
|
|
|
+ for _, v := range Mirror {
|
|
|
log.Println(v.Name, "Status:", v.Status)
|
|
|
remain := timestamp - v.LastAccesstime
|
|
|
- if remain > 10 { //5分钟掉线删除
|
|
|
- delete(Mirror, k)
|
|
|
- } else if remain > ACTIVECHECKTIME {
|
|
|
- v.Status = OFFLINE
|
|
|
+ /*
|
|
|
+ if remain > 30 { //30秒钟掉线删除
|
|
|
+ delete(Mirror, k)
|
|
|
+ } else if remain > ACTIVECHECKTIME {
|
|
|
+ v.Status = OFFLINE
|
|
|
+ }
|
|
|
+ */
|
|
|
+ if remain > ACTIVECHECKTIME {
|
|
|
+ v.IsOnline = false
|
|
|
+ } else {
|
|
|
+ v.IsOnline = true
|
|
|
}
|
|
|
}
|
|
|
lock.Unlock()
|