github.com/glide-im/glide@v1.6.0/pkg/conn/tcp_server.go (about)

     1  package conn
     2  
     3  import "net"
     4  
     5  type TcpServer struct {
     6  	handler ConnectionHandler
     7  }
     8  
     9  func NewTcpServer() *TcpServer {
    10  	return &TcpServer{}
    11  }
    12  
    13  func (t *TcpServer) SetConnHandler(handler ConnectionHandler) {
    14  	t.handler = handler
    15  }
    16  
    17  func (t *TcpServer) Run(host string, port int) error {
    18  	tcp, err := net.ListenTCP("tcp", &net.TCPAddr{
    19  		IP:   net.ParseIP(host),
    20  		Port: port,
    21  	})
    22  	if err != nil {
    23  		return err
    24  	}
    25  	for {
    26  		acceptTCP, err := tcp.AcceptTCP()
    27  		if err != nil {
    28  			return err
    29  		}
    30  		conn := ConnectionProxy{
    31  			conn: NewTcpConn(acceptTCP),
    32  		}
    33  		t.handler(conn)
    34  	}
    35  }