Skip to content

Commit a16527c

Browse files
authored
Merge pull request #477 from sylr/timeout-duration
Allow time.Duration or int for timeouts
2 parents 2feb378 + 046163e commit a16527c

File tree

2 files changed

+42
-21
lines changed

2 files changed

+42
-21
lines changed

dialer.go

Lines changed: 11 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -18,6 +18,7 @@ package quickfix
1818
import (
1919
"fmt"
2020
"net"
21+
"time"
2122

2223
"golang.org/x/net/proxy"
2324

@@ -27,8 +28,16 @@ import (
2728
func loadDialerConfig(settings *SessionSettings) (dialer proxy.Dialer, err error) {
2829
stdDialer := &net.Dialer{}
2930
if settings.HasSetting(config.SocketTimeout) {
30-
if stdDialer.Timeout, err = settings.DurationSetting(config.SocketTimeout); err != nil {
31-
return
31+
timeout, err := settings.DurationSetting(config.SocketTimeout)
32+
if err != nil {
33+
timeoutInt, err := settings.IntSetting(config.SocketTimeout)
34+
if err != nil {
35+
return stdDialer, err
36+
}
37+
38+
stdDialer.Timeout = time.Duration(timeoutInt) * time.Second
39+
} else {
40+
stdDialer.Timeout = timeout
3241
}
3342
}
3443
dialer = stdDialer

session_factory.go

Lines changed: 31 additions & 19 deletions
Original file line numberDiff line numberDiff line change
@@ -361,47 +361,59 @@ func (f sessionFactory) buildInitiatorSettings(session *session, settings *Sessi
361361

362362
session.ReconnectInterval = 30 * time.Second
363363
if settings.HasSetting(config.ReconnectInterval) {
364-
365-
interval, err := settings.IntSetting(config.ReconnectInterval)
364+
interval, err := settings.DurationSetting(config.ReconnectInterval)
366365
if err != nil {
367-
return err
366+
intervalInt, err := settings.IntSetting(config.ReconnectInterval)
367+
if err != nil {
368+
return err
369+
}
370+
371+
session.ReconnectInterval = time.Duration(intervalInt) * time.Second
372+
} else {
373+
session.ReconnectInterval = interval
368374
}
369375

370-
if interval <= 0 {
376+
if session.ReconnectInterval <= 0 {
371377
return errors.New("ReconnectInterval must be greater than zero")
372378
}
373-
374-
session.ReconnectInterval = time.Duration(interval) * time.Second
375379
}
376380

377381
session.LogoutTimeout = 2 * time.Second
378382
if settings.HasSetting(config.LogoutTimeout) {
379-
380-
timeout, err := settings.IntSetting(config.LogoutTimeout)
383+
timeout, err := settings.DurationSetting(config.LogoutTimeout)
381384
if err != nil {
382-
return err
383-
}
385+
timeoutInt, err := settings.IntSetting(config.LogoutTimeout)
386+
if err != nil {
387+
return err
388+
}
384389

385-
if timeout <= 0 {
386-
return errors.New("LogoutTimeout must be greater than zero")
390+
session.LogoutTimeout = time.Duration(timeoutInt) * time.Second
391+
} else {
392+
session.LogoutTimeout = timeout
387393
}
388394

389-
session.LogoutTimeout = time.Duration(timeout) * time.Second
395+
if session.LogoutTimeout <= 0 {
396+
return errors.New("LogonTimeout must be greater than zero")
397+
}
390398
}
391399

392400
session.LogonTimeout = 10 * time.Second
393401
if settings.HasSetting(config.LogonTimeout) {
394-
395-
timeout, err := settings.IntSetting(config.LogonTimeout)
402+
timeout, err := settings.DurationSetting(config.LogonTimeout)
396403
if err != nil {
397-
return err
404+
timeoutInt, err := settings.IntSetting(config.LogonTimeout)
405+
if err != nil {
406+
return err
407+
}
408+
409+
session.LogonTimeout = time.Duration(timeoutInt) * time.Second
410+
} else {
411+
session.LogonTimeout = timeout
398412
}
399413

400-
if timeout <= 0 {
414+
if session.LogonTimeout <= 0 {
401415
return errors.New("LogonTimeout must be greater than zero")
402416
}
403-
404-
session.LogonTimeout = time.Duration(timeout) * time.Second
405417
}
406418

407419
return f.configureSocketConnectAddress(session, settings)

0 commit comments

Comments
 (0)