看了nsq源码的nsqlookupd部分,发现作者使用了一个Context truct来包装一个NSQLookupd struct,而没有其他的func用于Context。不知道为什么要这样用,能从中得到什么好处这边走?下面的源代码在这里。谢谢!
上下文.go
type Context struct {
nsqlookupd *NSQLookupd
}
nsqlookupd.go
func (l *NSQLookupd) Main() {
ctx := &Context{l}
tcpListener, err := net.Listen("tcp", l.opts.TCPAddress)
if err != nil {
l.logf(LOG_FATAL, "listen (%s) failed - %s", l.opts.TCPAddress, err)
os.Exit(1)
}
l.Lock()
l.tcpListener = tcpListener
l.Unlock()
tcpServer := &tcpServer{ctx: ctx}
l.waitGroup.Wrap(func() {
protocol.TCPServer(tcpListener, tcpServer, l.opts.Logger)
})