NSQLookupd Main方法分析
上一篇 http://my.oschina.net/astute/blog/296955 已经分析了 nsqlookupd 启动时的命令行解析,最终构造了 NSQLookupd 结构体,这是一个很重要的结构体。 type NSQLookupd struct { options *nsqlookupdOptions // 命令行参数 tcpAddr *net.TCPAddr // tcp 端口 httpAddr *net.TCPAddr // http 端口 tcpListener net.Listener httpListener net.Listener waitGroup util.WaitGroupWrapper DB *RegistrationDB } 这篇文章分析下 daemon.Main() 执行过程 1、创建 context,内部只有一个指向NSQLookupd的指针 context := &Context{l} 2、创建 listener;Listen 方法支持面向流的监听,包括 unix domain stream socket。 tcpListener, err := net.Listen("tcp", l.tcpAddr.String()) 3、创建 tcpServer struct,内部只含有一个 context 指针,为什么需要对 NSQLookupd