github.com/fozzysec/SiaPrime@v0.0.0-20190612043147-66c8e8d11fe3/modules/gateway/conn.go (about)

     1  package gateway
     2  
     3  import (
     4  	"net"
     5  	"time"
     6  
     7  	"SiaPrime/modules"
     8  )
     9  
    10  // peerConn is a simple type that implements the modules.PeerConn interface.
    11  type peerConn struct {
    12  	net.Conn
    13  	dialbackAddr modules.NetAddress
    14  }
    15  
    16  // RPCAddr implements the RPCAddr method of the modules.PeerConn interface. It
    17  // is the address that identifies a peer.
    18  func (pc peerConn) RPCAddr() modules.NetAddress {
    19  	return pc.dialbackAddr
    20  }
    21  
    22  // staticDial will staticDial the input address and return a connection. staticDial appropriately
    23  // handles things like clean shutdown, fast shutdown, and chooses the correct
    24  // communication protocol.
    25  func (g *Gateway) staticDial(addr modules.NetAddress) (net.Conn, error) {
    26  	dialer := &net.Dialer{
    27  		Cancel:  g.threads.StopChan(),
    28  		Timeout: dialTimeout,
    29  	}
    30  	conn, err := dialer.Dial("tcp", string(addr))
    31  	if err != nil {
    32  		return nil, err
    33  	}
    34  	conn.SetDeadline(time.Now().Add(connStdDeadline))
    35  	return conn, nil
    36  }