| // Copyright 2015 Google Inc. All rights reserved. |
| // Use of this source code is governed by the Apache 2.0 |
| // license that can be found in the LICENSE file. |
| |
| // +build !appengine |
| |
| package socket |
| |
| import ( |
| "net" |
| "time" |
| |
| "golang.org/x/net/context" |
| ) |
| |
| // Dial connects to the address addr on the network protocol. |
| // The address format is host:port, where host may be a hostname or an IP address. |
| // Known protocols are "tcp" and "udp". |
| // The returned connection satisfies net.Conn, and is valid while ctx is valid; |
| // if the connection is to be used after ctx becomes invalid, invoke SetContext |
| // with the new context. |
| func Dial(ctx context.Context, protocol, addr string) (*Conn, error) { |
| conn, err := net.Dial(protocol, addr) |
| if err != nil { |
| return nil, err |
| } |
| return &Conn{conn}, nil |
| } |
| |
| // DialTimeout is like Dial but takes a timeout. |
| // The timeout includes name resolution, if required. |
| func DialTimeout(ctx context.Context, protocol, addr string, timeout time.Duration) (*Conn, error) { |
| conn, err := net.DialTimeout(protocol, addr, timeout) |
| if err != nil { |
| return nil, err |
| } |
| return &Conn{conn}, nil |
| } |
| |
| // LookupIP returns the given host's IP addresses. |
| func LookupIP(ctx context.Context, host string) (addrs []net.IP, err error) { |
| return net.LookupIP(host) |
| } |
| |
| // Conn represents a socket connection. |
| // It implements net.Conn. |
| type Conn struct { |
| net.Conn |
| } |
| |
| // SetContext sets the context that is used by this Conn. |
| // It is usually used only when using a Conn that was created in a different context, |
| // such as when a connection is created during a warmup request but used while |
| // servicing a user request. |
| func (cn *Conn) SetContext(ctx context.Context) { |
| // This function is not required in App Engine "flexible environment". |
| } |
| |
| // KeepAlive signals that the connection is still in use. |
| // It may be called to prevent the socket being closed due to inactivity. |
| func (cn *Conn) KeepAlive() error { |
| // This function is not required in App Engine "flexible environment". |
| return nil |
| } |