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 5package net 6 7import "os" 8 9// BUG(mikio): On JS and Windows, the FileConn, FileListener and 10// FilePacketConn functions are not implemented. 11 12type fileAddr string 13 14func (fileAddr) Network() string { return "file+net" } 15func (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. 21func 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. 33func 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. 45func 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