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

时间:2022-05-05
本文章向大家介绍转-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{}

     }
}