Skip to content

Commit daf4180

Browse files
committed
Accept Settings instead of SessionSettings
1 parent 5fcdf50 commit daf4180

File tree

4 files changed

+48
-17
lines changed

4 files changed

+48
-17
lines changed

filestore.go

+7-3
Original file line numberDiff line numberDiff line change
@@ -17,7 +17,7 @@ type msgDef struct {
1717
}
1818

1919
type fileStoreFactory struct {
20-
settings *SessionSettings
20+
settings *Settings
2121
}
2222

2323
type fileStore struct {
@@ -37,13 +37,17 @@ type fileStore struct {
3737
}
3838

3939
// NewFileStoreFactory returns a file-based implementation of MessageStoreFactory
40-
func NewFileStoreFactory(settings *SessionSettings) MessageStoreFactory {
40+
func NewFileStoreFactory(settings *Settings) MessageStoreFactory {
4141
return fileStoreFactory{settings: settings}
4242
}
4343

4444
// Create creates a new FileStore implementation of the MessageStore interface
4545
func (f fileStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
46-
dirname, err := f.settings.Setting(config.FileStorePath)
46+
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
47+
if !ok {
48+
return nil, fmt.Errorf("unknown session: %v", sessionID)
49+
}
50+
dirname, err := sessionSettings.Setting(config.FileStorePath)
4751
if err != nil {
4852
return nil, err
4953
}

filestore_test.go

+17-5
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ import (
44
"fmt"
55
"os"
66
"path"
7+
"strings"
78
"testing"
89
"time"
910

10-
"github.com/quickfixgo/quickfix/config"
1111
"github.com/stretchr/testify/require"
1212
"github.com/stretchr/testify/suite"
1313
)
@@ -19,11 +19,23 @@ type FileStoreTestSuite struct {
1919
}
2020

2121
func (suite *FileStoreTestSuite) SetupTest() {
22-
var err error
23-
settings := NewSessionSettings()
2422
suite.fileStoreRootPath = path.Join(os.TempDir(), fmt.Sprintf("FileStoreTestSuite-%d", os.Getpid()))
25-
settings.Set(config.FileStorePath, path.Join(suite.fileStoreRootPath, fmt.Sprintf("%d", time.Now().UnixNano())))
26-
suite.msgStore, err = NewFileStoreFactory(settings).Create(SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"})
23+
fileStorePath := path.Join(suite.fileStoreRootPath, fmt.Sprintf("%d", time.Now().UnixNano()))
24+
sessionID := SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"}
25+
26+
// create settings
27+
settings, err := ParseSettings(strings.NewReader(fmt.Sprintf(`
28+
[DEFAULT]
29+
FileStorePath=%s
30+
31+
[SESSION]
32+
BeginString=%s
33+
SenderCompID=%s
34+
TargetCompID=%s`, fileStorePath, sessionID.BeginString, sessionID.SenderCompID, sessionID.TargetCompID)))
35+
require.Nil(suite.T(), err)
36+
37+
// create store
38+
suite.msgStore, err = NewFileStoreFactory(settings).Create(sessionID)
2739
require.Nil(suite.T(), err)
2840
}
2941

sqlstore.go

+9-4
Original file line numberDiff line numberDiff line change
@@ -2,13 +2,14 @@ package quickfix
22

33
import (
44
"database/sql"
5+
"fmt"
56
"time"
67

78
"github.com/quickfixgo/quickfix/config"
89
)
910

1011
type sqlStoreFactory struct {
11-
settings *SessionSettings
12+
settings *Settings
1213
}
1314

1415
type sqlStore struct {
@@ -20,17 +21,21 @@ type sqlStore struct {
2021
}
2122

2223
// NewSQLStoreFactory returns a sql-based implementation of MessageStoreFactory
23-
func NewSQLStoreFactory(settings *SessionSettings) MessageStoreFactory {
24+
func NewSQLStoreFactory(settings *Settings) MessageStoreFactory {
2425
return sqlStoreFactory{settings: settings}
2526
}
2627

2728
// Create creates a new SQLStore implementation of the MessageStore interface
2829
func (f sqlStoreFactory) Create(sessionID SessionID) (msgStore MessageStore, err error) {
29-
sqlDriver, err := f.settings.Setting(config.SQLDriver)
30+
sessionSettings, ok := f.settings.SessionSettings()[sessionID]
31+
if !ok {
32+
return nil, fmt.Errorf("unknown session: %v", sessionID)
33+
}
34+
sqlDriver, err := sessionSettings.Setting(config.SQLDriver)
3035
if err != nil {
3136
return nil, err
3237
}
33-
sqlDataSourceName, err := f.settings.Setting(config.SQLDataSourceName)
38+
sqlDataSourceName, err := sessionSettings.Setting(config.SQLDataSourceName)
3439
if err != nil {
3540
return nil, err
3641
}

sqlstore_test.go

+15-5
Original file line numberDiff line numberDiff line change
@@ -7,11 +7,11 @@ import (
77
"os"
88
"path"
99
"path/filepath"
10+
"strings"
1011
"testing"
1112
"time"
1213

1314
_ "github.com/mattn/go-sqlite3"
14-
"github.com/quickfixgo/quickfix/config"
1515
"github.com/stretchr/testify/require"
1616
"github.com/stretchr/testify/suite"
1717
)
@@ -41,11 +41,21 @@ func (suite *SQLStoreTestSuite) SetupTest() {
4141
require.Nil(suite.T(), err)
4242
}
4343

44+
// create settings
45+
sessionID := SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"}
46+
settings, err := ParseSettings(strings.NewReader(fmt.Sprintf(`
47+
[DEFAULT]
48+
SQLDriver=%s
49+
SQLDataSourceName=%s
50+
51+
[SESSION]
52+
BeginString=%s
53+
SenderCompID=%s
54+
TargetCompID=%s`, sqlDriver, sqlDsn, sessionID.BeginString, sessionID.SenderCompID, sessionID.TargetCompID)))
55+
require.Nil(suite.T(), err)
56+
4457
// create store
45-
settings := NewSessionSettings()
46-
settings.Set(config.SQLDataSourceName, sqlDsn)
47-
settings.Set(config.SQLDriver, sqlDriver)
48-
suite.msgStore, err = NewSQLStoreFactory(settings).Create(SessionID{BeginString: "FIX.4.4", SenderCompID: "SENDER", TargetCompID: "TARGET"})
58+
suite.msgStore, err = NewSQLStoreFactory(settings).Create(sessionID)
4959
require.Nil(suite.T(), err)
5060
}
5161

0 commit comments

Comments
 (0)