示例#1
0
文件: tcp.go 项目: iwarsong/bearded
func (d *dialer) Dial() (mangos.Pipe, error) {

	conn, err := net.DialTCP("tcp", nil, d.addr)
	if err != nil {
		return nil, err
	}
	if err = d.opts.configTCP(conn); err != nil {
		conn.Close()
		return nil, err
	}
	return mangos.NewConnPipe(conn, d.proto)
}
示例#2
0
func (l *listener) Accept() (mangos.Pipe, error) {

	conn, err := l.listener.AcceptTCP()
	if err != nil {
		return nil, err
	}

	if err = l.opts.configTCP(conn); err != nil {
		conn.Close()
		return nil, err
	}

	return mangos.NewConnPipe(tls.Server(conn, l.config), l.proto)
}
示例#3
0
文件: tcp.go 项目: iwarsong/bearded
func (l *listener) Accept() (mangos.Pipe, error) {

	if l.listener == nil {
		return nil, mangos.ErrClosed
	}
	conn, err := l.listener.AcceptTCP()
	if err != nil {
		return nil, err
	}
	if err = l.opts.configTCP(conn); err != nil {
		conn.Close()
		return nil, err
	}
	return mangos.NewConnPipe(conn, l.proto)
}
示例#4
0
func (d *dialer) Dial() (mangos.Pipe, error) {

	var config *tls.Config
	tconn, err := net.DialTCP("tcp", nil, d.addr)
	if err != nil {
		return nil, err
	}
	if err = d.opts.configTCP(tconn); err != nil {
		tconn.Close()
		return nil, err
	}
	if v, ok := d.opts[mangos.OptionTlsConfig]; ok {
		config = v.(*tls.Config)
	}
	conn := tls.Client(tconn, config)
	return mangos.NewConnPipe(conn, d.proto,
		mangos.PropTlsConnState, conn.ConnectionState())
}