func NewPipe(f0, f1 trace.Frame, a0, a1 net.Addr) (p, q net.Conn) {
	a, b := NewHalfConn(f0), NewHalfConn(f1)
	ab, ba := newChan(), newChan()
	a.RecvFrom(ba, a1)
	b.RecvFrom(ab, a0)
	a.SendTo(ab, nil, a0)
	b.SendTo(ba, nil, a1)
	return a, b
}
// NewPipe returns the two net.Conn endpoints of a reliable pipe.
NewPipe returns the two net.Conn endpoints of a reliable pipe.
// NewPipe returns the two net . Conn endpoints of a reliable pipe .
func NewPipe(f0, f1 trace.Frame, a0, a1 net.Addr) (p, q net.Conn) {
	a, b := NewHalfConn(f0), NewHalfConn(f1)
	ab, ba := newChan(), newChan()
	a.RecvFrom(ba, a1)
	b.RecvFrom(ab, a0)
	a.SendTo(ab, nil, a0)
	b.SendTo(ba, nil, a1)
	return a, b
}
func NewPipe ( f0 , f1 trace . Frame , a0 , a1 net . Addr ) ( p , q net . Conn ) { a , b := NewHalfConn ( f0 ) , NewHalfConn ( f1 ) ab , ba := newChan ( ) , newChan ( ) a . RecvFrom ( ba , a1 ) b . RecvFrom ( ab , a0 ) a . SendTo ( ab , nil , a0 ) b . SendTo ( ba , nil , a1 ) return a , b }
NewPipe returns the two net.Conn endpoints of a reliable pipe.
NewPipe returns the two net . Conn endpoints of a reliable pipe .