GeezerVisonThe World Wide Web, restored to 800 pixels of glory. |
| Home|About|Gaming cabinet|Archives|How it works|Starter sites |
GeezerVison is showing github.com — netpoll/net_dialer.go at main · stop-coding/netpoll Expand file tree/ Copy pathnet_dialer.goMore file actions 87 lines (75 loc) · 2.6 KB / Copy pathnet_dialer.goFile metadata and controls87 lines (75 loc) · 2.6 KB 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 // Copyright 2021 CloudWeGo Authors // // Licensed under the Apache License, Version 2.0 (the "License"); // you may not use this file except in compliance with the License. // You may obtain a copy of the License at // // http://www.apache.org/licenses/LICENSE-2.0 // // Unless required by applicable law or agreed to in writing, software // distributed under the License is distributed on an "AS IS" BASIS, // WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. // See the License for the specific language governing permissions and // limitations under the License. package netpoll import ( "context" "net" "time" ) // Dialer extends net.Dialer's API, just for interface compatibility. // DialConnection is recommended, but of course all functions are practically the same. // The returned net.Conn can be directly asserted as Connection if error is nil. type Dialer interface { DialConnection(network, address string, timeout time.Duration) (connection Connection, err error) DialTimeout(network, address string, timeout time.Duration) (conn net.Conn, err error) } // DialConnection is a default implementation of Dialer. func DialConnection(network, address string, timeout time.Duration) (connection Connection, err error) { return defaultDialer.DialConnection(network, address, timeout) } // NewDialer only support TCP and unix socket now. func NewDialer() Dialer { return &dialer{} } var defaultDialer = NewDialer() type dialer struct{} // DialTimeout implements Dialer. func (d *dialer) DialTimeout(network, address string, timeout time.Duration) (net.Conn, error) { conn, err := d.DialConnection(network, address, timeout) return conn, err } // DialConnection implements Dialer. func (d *dialer) DialConnection(network, address string, timeout time.Duration) (connection Connection, err error) { ctx := context.Background() if timeout > 0 { subCtx, cancel := context.WithTimeout(ctx, timeout) defer cancel() ctx = subCtx } switch network { case "tcp", "tcp4", "tcp6": var raddr *TCPAddr raddr, err = ResolveTCPAddr(network, address) if err != nil { return nil, err } connection, err = DialTCP(ctx, network, nil, raddr) // case "udp", "udp4", "udp6": // TODO: unsupport now case "unix", "unixgram", "unixpacket": var raddr *UnixAddr raddr, err = ResolveUnixAddr(network, address) if err != nil { return nil, err } connection, err = DialUnix(network, nil, raddr) default: return nil, net.UnknownNetworkError(network) } return connection, err } // sysDialer contains a Dial's parameters and configuration. type sysDialer struct { net.Dialer network, address string } |
| You are visitor 01402520 — GeezerVison does not store the pages you look up. Best viewed with Netscape Navigator 4.7 or Internet Explorer 6 at 800×600. No cookies required. |