首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >转-Golang自玩项目中一个重连机制实现.

转-Golang自玩项目中一个重连机制实现.

作者头像
李海彬
发布2018-03-26 12:42:36
6430
发布2018-03-26 12:42:36
举报
文章被收录于专栏:Golang语言社区Golang语言社区
package tcp_listentype Connection interface {
    Read() (

     value interface{}, tag byte, err error)
    Write(tag byte, body interface{}) (err error)
    Close() error
    LocalAddr() string
    RemoteAddr() string

 }



   type isReconn struct {
    reconn       bool
    connFunc     func()
    continueChan []chan bool

}



func (self *isReconn) success() {
    self.reconn = true
    self.connFunc()    

    for _, Chan := range self.continueChan {
        Chan <- true
    }
    self.reconn = false

}



func (self *isReconn) Reconnection() <-chan bool {
    Chan := make(chan bool, 1)    

    if !self.reconn {
        self.continueChan = []chan bool{}
        self.continueChan = append(self.continueChan, Chan)        

    go self.success()
    } else {
        self.continueChan = append(self.continueChan, Chan)
    }    

    return Chan
}



func NewReconnection(f func()) *isReconn {    

     return &isReconn{connFunc: f, continueChan: []chan bool{}

     }
}

本文参与 腾讯云自媒体分享计划,分享自微信公众号。
原始发表:2017-01-23,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 Golang语言社区 微信公众号,前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体分享计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档