Add LOOP_VINFO_MAX_VECT_FACTOR
[official-gcc.git] / libgo / go / net / pipe.go
blob37e552f54e5a2987625c1f626887d744de11400d
1 // Copyright 2010 The Go Authors. All rights reserved.
2 // Use of this source code is governed by a BSD-style
3 // license that can be found in the LICENSE file.
5 package net
7 import (
8 "errors"
9 "io"
10 "time"
13 // Pipe creates a synchronous, in-memory, full duplex
14 // network connection; both ends implement the Conn interface.
15 // Reads on one end are matched with writes on the other,
16 // copying data directly between the two; there is no internal
17 // buffering.
18 func Pipe() (Conn, Conn) {
19 r1, w1 := io.Pipe()
20 r2, w2 := io.Pipe()
22 return &pipe{r1, w2}, &pipe{r2, w1}
25 type pipe struct {
26 *io.PipeReader
27 *io.PipeWriter
30 type pipeAddr int
32 func (pipeAddr) Network() string {
33 return "pipe"
36 func (pipeAddr) String() string {
37 return "pipe"
40 func (p *pipe) Close() error {
41 err := p.PipeReader.Close()
42 err1 := p.PipeWriter.Close()
43 if err == nil {
44 err = err1
46 return err
49 func (p *pipe) LocalAddr() Addr {
50 return pipeAddr(0)
53 func (p *pipe) RemoteAddr() Addr {
54 return pipeAddr(0)
57 func (p *pipe) SetDeadline(t time.Time) error {
58 return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")}
61 func (p *pipe) SetReadDeadline(t time.Time) error {
62 return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")}
65 func (p *pipe) SetWriteDeadline(t time.Time) error {
66 return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")}