Skip to content

Commit c8de907

Browse files
change ResetSeqTime to time.Time based on the config's timeZone
1 parent 9449794 commit c8de907

File tree

4 files changed

+12
-7
lines changed

4 files changed

+12
-7
lines changed

internal/session_settings.go

Lines changed: 2 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -18,7 +18,8 @@ type SessionSettings struct {
1818
SkipCheckLatency bool
1919
MaxLatency time.Duration
2020
DisableMessagePersist bool
21-
ResetSeqTime TimeOfDay
21+
TimeZone *time.Location
22+
ResetSeqTime time.Time
2223
EnableResetSeqTime bool
2324

2425
// Required on logon for FIX.T.1 messages.

session_factory.go

Lines changed: 6 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -63,6 +63,8 @@ type sessionFactory struct {
6363
BuildInitiators bool
6464
}
6565

66+
const shortForm = "15:04:05"
67+
6668
// Creates Session, associates with internal session registry.
6769
func (f sessionFactory) createSession(
6870
sessionID SessionID, storeFactory MessageStoreFactory, settings *SessionSettings,
@@ -280,6 +282,7 @@ func (f sessionFactory) newSession(
280282
return
281283
}
282284
}
285+
s.TimeZone = loc
283286

284287
if !settings.HasSetting(config.StartDay) && !settings.HasSetting(config.EndDay) {
285288
var weekdays []time.Weekday
@@ -354,11 +357,11 @@ func (f sessionFactory) newSession(
354357
return
355358
}
356359

357-
var seqTime internal.TimeOfDay
358-
if seqTime, err = internal.ParseTimeOfDay(seqTimeStr); err != nil {
360+
var seqTime time.Time
361+
if seqTime, err = time.ParseInLocation(shortForm, seqTimeStr, s.TimeZone); err != nil {
359362
err = errors.Wrapf(
360363
err, "problem parsing time of day '%v' for setting '%v",
361-
settings.settings[config.StartTime], config.StartTime,
364+
settings.settings[config.ResetSeqTime], config.ResetSeqTime,
362365
)
363366
return
364367
}

session_state.go

Lines changed: 3 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -157,8 +157,9 @@ func (sm *stateMachine) CheckSessionTime(session *session, now time.Time) {
157157

158158
func (sm *stateMachine) CheckResetTime(session *session, now time.Time) {
159159
if session.EnableResetSeqTime {
160-
ts := internal.NewTimeOfDay(now.Clock())
161-
if session.ResetSeqTime == ts {
160+
if session.ResetSeqTime.Hour() == now.Hour() &&
161+
session.ResetSeqTime.Minute() == now.Minute() &&
162+
session.ResetSeqTime.Second() == now.Second() {
162163
session.sendLogonInReplyTo(true, nil)
163164
}
164165
}

session_test.go

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -1007,7 +1007,7 @@ func (s *SessionSuite) TestSeqNumResetTime() {
10071007
s.SetupTest()
10081008

10091009
now := time.Now().UTC()
1010-
s.session.ResetSeqTime = internal.NewTimeOfDay(now.Clock())
1010+
s.session.ResetSeqTime = now
10111011
s.session.EnableResetSeqTime = true
10121012

10131013
s.IncrNextSenderMsgSeqNum()

0 commit comments

Comments
 (0)