| // Pipe creates a synchronous, in-memory, full duplex |
| // network connection; both ends implement the Conn interface. |
| // Reads on one end are matched with writes on the other, |
| // copying data directly between the two; there is no internal |
| func Pipe() (Conn, Conn) { |
| return &pipe{r1, w2}, &pipe{r2, w1} |
| func (pipeAddr) Network() string { |
| func (pipeAddr) String() string { |
| func (p *pipe) Close() os.Error { |
| err := p.PipeReader.Close() |
| err1 := p.PipeWriter.Close() |
| func (p *pipe) LocalAddr() Addr { |
| func (p *pipe) RemoteAddr() Addr { |
| func (p *pipe) SetTimeout(nsec int64) os.Error { |
| return os.NewError("net.Pipe does not support timeouts") |
| func (p *pipe) SetReadTimeout(nsec int64) os.Error { |
| return os.NewError("net.Pipe does not support timeouts") |
| func (p *pipe) SetWriteTimeout(nsec int64) os.Error { |
| return os.NewError("net.Pipe does not support timeouts") |