lxd/util/net.go
func InMemoryNetwork() (net.Listener, func() net.Conn) {
	listener := &inMemoryListener{
		conns:  make(chan net.Conn, 16),
		closed: make(chan struct{}),
	}
	dialer := func() net.Conn {
		server, client := net.Pipe()
		listener.conns <- server
		return client
	}
	return listener, dialer
}
func InMemoryNetwork() (net.Listener, func() net.Conn) {
	listener := &inMemoryListener{
		conns:  make(chan net.Conn, 16),
		closed: make(chan struct{}),
	}
	dialer := func() net.Conn {
		server, client := net.Pipe()
		listener.conns <- server
		return client
	}
	return listener, dialer
}
func InMemoryNetwork ( ) ( net . Listener , func ( ) net . Conn ) { listener := & inMemoryListener { conns : make ( chan net . Conn , 16 ) , closed : make ( chan struct { } ) , } dialer := func ( ) net . Conn { server , client := net . Pipe ( ) listener . conns <- server return client } return listener , dialer }
// InMemoryNetwork creates a fully in-memory listener and dial function.
//
// Each time the dial function is invoked a new pair of net.Conn objects will
// be created using net.Pipe: the listener's Accept method will unblock and
// return one end of the pipe and the other end will be returned by the dial
// function.
InMemoryNetwork creates a fully in - memory listener and dial function . Each time the dial function is invoked a new pair of net . Conn objects will be created using net . Pipe : the listener s Accept method will unblock and return one end of the pipe and the other end will be returned by the dial function .