65 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
			
		
		
	
	
			65 lines
		
	
	
		
			2.0 KiB
		
	
	
	
		
			Go
		
	
	
	
| // 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
 | |
| }
 |