Mercurial > hg > CbC > CbC_gcc
view libgo/go/net/pipe.go @ 120:f93fa5091070
fix conv1.c
author | mir3636 |
---|---|
date | Thu, 08 Mar 2018 14:53:42 +0900 |
parents | 04ced10e8804 |
children | 84e7813d76e9 |
line wrap: on
line source
// Copyright 2010 The Go Authors. All rights reserved. // Use of this source code is governed by a BSD-style // license that can be found in the LICENSE file. package net import ( "errors" "io" "time" ) // 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 // buffering. func Pipe() (Conn, Conn) { r1, w1 := io.Pipe() r2, w2 := io.Pipe() return &pipe{r1, w2}, &pipe{r2, w1} } type pipe struct { *io.PipeReader *io.PipeWriter } type pipeAddr int func (pipeAddr) Network() string { return "pipe" } func (pipeAddr) String() string { return "pipe" } func (p *pipe) Close() error { err := p.PipeReader.Close() err1 := p.PipeWriter.Close() if err == nil { err = err1 } return err } func (p *pipe) LocalAddr() Addr { return pipeAddr(0) } func (p *pipe) RemoteAddr() Addr { return pipeAddr(0) } func (p *pipe) SetDeadline(t time.Time) error { return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} } func (p *pipe) SetReadDeadline(t time.Time) error { return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} } func (p *pipe) SetWriteDeadline(t time.Time) error { return &OpError{Op: "set", Net: "pipe", Source: nil, Addr: nil, Err: errors.New("deadline not supported")} }