1 // Copyright 2015 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. 4 5 package net 6 7 import "os" 8 9 // BUG(mikio): On NaCl and Windows, the FileConn, FileListener and 10 // FilePacketConn functions are not implemented. 11 12 type fileAddr string 13 14 func (fileAddr) Network() string { return "file+net" } 15 func (f fileAddr) String() string { return string(f) } 16 17 // FileConn returns a copy of the network connection corresponding to 18 // the open file f. 19 // It is the caller's responsibility to close f when finished. 20 // Closing c does not affect f, and closing f does not affect c. 21 func FileConn(f *os.File) (c Conn, err error) { 22 c, err = fileConn(f) 23 if err != nil { 24 err = &OpError{Op: "file", Net: "file+net", Source: nil, Addr: fileAddr(f.Name()), Err: err} 25 } 26 return 27 } 28 29 // FileListener returns a copy of the network listener corresponding 30 // to the open file f. 31 // It is the caller's responsibility to close ln when finished. 32 // Closing ln does not affect f, and closing f does not affect ln. 33 func FileListener(f *os.File) (ln Listener, err error) { 34 ln, err = fileListener(f) 35 if err != nil { 36 err = &OpError{Op: "file", Net: "file+net", Source: nil, Addr: fileAddr(f.Name()), Err: err} 37 } 38 return 39 } 40 41 // FilePacketConn returns a copy of the packet network connection 42 // corresponding to the open file f. 43 // It is the caller's responsibility to close f when finished. 44 // Closing c does not affect f, and closing f does not affect c. 45 func FilePacketConn(f *os.File) (c PacketConn, err error) { 46 c, err = filePacketConn(f) 47 if err != nil { 48 err = &OpError{Op: "file", Net: "file+net", Source: nil, Addr: fileAddr(f.Name()), Err: err} 49 } 50 return 51 } 52