@@ -73,11 +73,18 @@ var (
73
73
Longhaul = Network {1000 * 1024 , 200 * time .Millisecond , 9000 }
74
74
)
75
75
76
+ func (n * Network ) isLocal () bool {
77
+ return * n == Local
78
+ }
79
+
76
80
// Conn returns a net.Conn that wraps c and injects n's latency into that
77
81
// connection. This function also imposes latency for connection creation.
78
82
// If n's Latency is lower than the measured latency in c, an error is
79
83
// returned.
80
84
func (n * Network ) Conn (c net.Conn ) (net.Conn , error ) {
85
+ if n .isLocal () {
86
+ return c , nil
87
+ }
81
88
start := now ()
82
89
nc := & conn {Conn : c , network : n , readBuf : new (bytes.Buffer )}
83
90
if err := nc .sync (); err != nil {
@@ -246,6 +253,9 @@ func (c *conn) sync() error {
246
253
// Listener returns a net.Listener that wraps l and injects n's latency in its
247
254
// connections.
248
255
func (n * Network ) Listener (l net.Listener ) net.Listener {
256
+ if n .isLocal () {
257
+ return l
258
+ }
249
259
return & listener {Listener : l , network : n }
250
260
}
251
261
@@ -265,6 +275,9 @@ func (l *listener) Accept() (net.Conn, error) {
265
275
// Dialer returns a Dialer that wraps d and injects n's latency in its
266
276
// connections. n's Latency is also injected to the connection's creation.
267
277
func (n * Network ) Dialer (d Dialer ) Dialer {
278
+ if n .isLocal () {
279
+ return d
280
+ }
268
281
return func (network , address string ) (net.Conn , error ) {
269
282
conn , err := d (network , address )
270
283
if err != nil {
@@ -278,6 +291,9 @@ func (n *Network) Dialer(d Dialer) Dialer {
278
291
// in its connections. n's Latency is also injected to the connection's
279
292
// creation.
280
293
func (n * Network ) TimeoutDialer (d TimeoutDialer ) TimeoutDialer {
294
+ if n .isLocal () {
295
+ return d
296
+ }
281
297
return func (network , address string , timeout time.Duration ) (net.Conn , error ) {
282
298
conn , err := d (network , address , timeout )
283
299
if err != nil {
@@ -291,6 +307,9 @@ func (n *Network) TimeoutDialer(d TimeoutDialer) TimeoutDialer {
291
307
// in its connections. n's Latency is also injected to the connection's
292
308
// creation.
293
309
func (n * Network ) ContextDialer (d ContextDialer ) ContextDialer {
310
+ if n .isLocal () {
311
+ return d
312
+ }
294
313
return func (ctx context.Context , network , address string ) (net.Conn , error ) {
295
314
conn , err := d (ctx , network , address )
296
315
if err != nil {
0 commit comments