Add Quickfix library #1
@ -6,18 +6,21 @@ import (
|
||||
|
||||
"quantex.com/qfixdpl/quickfix"
|
||||
"quantex.com/qfixdpl/quickfix/gen/fix50sp2/quote"
|
||||
"quantex.com/qfixdpl/src/domain"
|
||||
)
|
||||
|
||||
type application struct {
|
||||
router *quickfix.MessageRouter
|
||||
notifier domain.Notifier
|
||||
onLogon func(quickfix.SessionID)
|
||||
onLogout func(quickfix.SessionID)
|
||||
onQuote func(quote.Quote, quickfix.SessionID)
|
||||
}
|
||||
|
||||
func newApplication() *application {
|
||||
func newApplication(n domain.Notifier) *application {
|
||||
app := &application{
|
||||
router: quickfix.NewMessageRouter(),
|
||||
notifier: n,
|
||||
}
|
||||
|
||||
app.router.AddRoute(quote.Route(app.handleQuote))
|
||||
@ -38,6 +41,9 @@ func (a *application) OnLogon(sessionID quickfix.SessionID) {
|
||||
|
||||
func (a *application) OnLogout(sessionID quickfix.SessionID) {
|
||||
slog.Info("FIX session logged out", "session", sessionID.String())
|
||||
|
||||
a.notifier.SendMsg(domain.MessageChannelError, "Logout", domain.MessageStatusWarning, nil)
|
||||
|
||||
if a.onLogout != nil {
|
||||
a.onLogout(sessionID)
|
||||
}
|
||||
|
||||
@ -40,7 +40,7 @@ func NewManager(cfg app.FIXConfig, orderStore domain.OrderStore, notify domain.N
|
||||
}
|
||||
|
||||
func (m *Manager) Start() error {
|
||||
fixApp := newApplication()
|
||||
fixApp := newApplication(m.notify)
|
||||
fixApp.onLogon = m.onLogon
|
||||
fixApp.onLogout = m.onLogout
|
||||
m.app = fixApp
|
||||
|
||||
Reference in New Issue
Block a user