diff --git a/balance/poll.go b/balance/poll.go index 1dbf742..c89eac8 100644 --- a/balance/poll.go +++ b/balance/poll.go @@ -74,3 +74,57 @@ func (p *Poll) GetServerNode() (*define.ServerNode, error) { return serverNode, nil } + +// AddServerNode 新添加一个服务器节点 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 10:07 下午 2021/10/20 +func (p *Poll) AddServerNode(hostIP string, port int) error { + if len(hostIP) == 0 || port <= 0 { + return errors.New("host ip or port is invalid") + } + p.Lock() + defer p.Unlock() + for _, item := range p.serverList { + if item.HostIP == hostIP && item.Port == port { + return errors.New("host config is already exist") + } + } + p.serverList = append(p.serverList, &define.ServerNode{ + HostIP: hostIP, + Port: port, + Status: define.ServerNodeStatusNormal, + }) + return nil +} + +// Remove 移除一个节点, force = true , 强制删除, force = false 逻辑删除, 设置状态 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 10:19 下午 2021/10/20 +func (p *Poll) Remove(hostIP string, port int, force bool) { + p.Lock() + defer p.Unlock() + tmpServerNode := make([]*define.ServerNode, 0) + for _, item := range p.serverList { + if item.HostIP == hostIP && item.Port == port { + if force { + continue + } + item.Status = define.ServerNodeStatusRemove + } + tmpServerNode = append(tmpServerNode, item) + } + p.serverList = tmpServerNode +} + +// GetServerNodeList 获取服务器节点 +// +// Author : go_developer@163.com<白茶清欢> +// +// Date : 10:33 下午 2021/10/20 +func (p *Poll) GetServerNodeList() []*define.ServerNode { + return p.serverList +}