1 // Copyright 2009 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.
13 func (c
*TCPConn
) readFrom(r io
.Reader
) (int64, error
) {
14 return genericReadFrom(c
, r
)
17 func (sd
*sysDialer
) dialTCP(ctx context
.Context
, laddr
, raddr
*TCPAddr
) (*TCPConn
, error
) {
18 if testHookDialTCP
!= nil {
19 return testHookDialTCP(ctx
, sd
.network
, laddr
, raddr
)
21 return sd
.doDialTCP(ctx
, laddr
, raddr
)
24 func (sd
*sysDialer
) doDialTCP(ctx context
.Context
, laddr
, raddr
*TCPAddr
) (*TCPConn
, error
) {
26 case "tcp", "tcp4", "tcp6":
28 return nil, UnknownNetworkError(sd
.network
)
31 return nil, errMissingAddress
33 fd
, err
:= dialPlan9(ctx
, sd
.network
, laddr
, raddr
)
37 return newTCPConn(fd
), nil
40 func (ln
*TCPListener
) ok() bool { return ln
!= nil && ln
.fd
!= nil && ln
.fd
.ctl
!= nil }
42 func (ln
*TCPListener
) accept() (*TCPConn
, error
) {
43 fd
, err
:= ln
.fd
.acceptPlan9()
47 return newTCPConn(fd
), nil
50 func (ln
*TCPListener
) close() error
{
51 if err
:= ln
.fd
.pfd
.Close(); err
!= nil {
54 if _
, err
:= ln
.fd
.ctl
.WriteString("hangup"); err
!= nil {
58 if err
:= ln
.fd
.ctl
.Close(); err
!= nil {
64 func (ln
*TCPListener
) file() (*os
.File
, error
) {
72 func (sl
*sysListener
) listenTCP(ctx context
.Context
, laddr
*TCPAddr
) (*TCPListener
, error
) {
73 fd
, err
:= listenPlan9(ctx
, sl
.network
, laddr
)
77 return &TCPListener
{fd
}, nil