Ejemplo n.º 1
0
func runEchoServer(listenerNewer ListenNewer) net.Listener {
	return listenAccept(listenerNewer, func(c net.Conn) {
		defer c.Close()
		_, err := io.Copy(c, c)
		if kmgNet.IsSocketCloseError(err) {
			return
		}
		mustNotError(err)
	})
}
Ejemplo n.º 2
0
func listenAccept(listenerNewer ListenNewer, handler func(c net.Conn)) net.Listener {
	listener, err := listenerNewer()
	mustNotError(err)
	go func() {
		for {
			c, err := listener.Accept()
			if kmgNet.IsSocketCloseError(err) {
				return
			}
			mustNotError(err)
			go handler(c)
		}
	}()
	return listener
}
Ejemplo n.º 3
0
func (s *httpNetServer) Start() error {
	var err error
	s.listener, err = net.Listen("tcp", s.addr)
	if err != nil {
		return err
	}
	go func() {
		err := s.Server.Serve(s.listener)
		if err != nil {
			if kmgNet.IsSocketCloseError(err) {
				return
			}
			panic(err)
		}
	}()
	return nil
}