Add Quickfix library #1
@ -1,7 +1,6 @@
|
||||
package fix
|
||||
|
||||
import (
|
||||
"fmt"
|
||||
"log/slog"
|
||||
"os"
|
||||
"sync"
|
||||
@ -47,13 +46,19 @@ func (m *Manager) Start() error {
|
||||
|
||||
f, err := os.Open(m.cfg.SettingsFile)
|
||||
if err != nil {
|
||||
return fmt.Errorf("opening FIX settings file %q: %w", m.cfg.SettingsFile, err)
|
||||
err = tracerr.Errorf("error opening FIX settings file %q: %s", m.cfg.SettingsFile, err)
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
defer f.Close()
|
||||
|
||||
settings, err := quickfix.ParseSettings(f)
|
||||
if err != nil {
|
||||
return fmt.Errorf("parsing FIX settings: %w", err)
|
||||
err = tracerr.Errorf("error parsing FIX settings: %s", err)
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
storeFactory := quickfix.NewMemoryStoreFactory()
|
||||
@ -67,13 +72,19 @@ func (m *Manager) Start() error {
|
||||
|
||||
initiator, err := quickfix.NewInitiator(fixApp, storeFactory, settings, logFactory)
|
||||
if err != nil {
|
||||
return fmt.Errorf("creating FIX initiator: %w", err)
|
||||
err = tracerr.Errorf("error creating FIX initiator: %s", err)
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
m.initiator = initiator
|
||||
|
||||
if err = m.initiator.Start(); err != nil {
|
||||
return fmt.Errorf("starting FIX initiator: %w", err)
|
||||
err = tracerr.Errorf("error starting FIX initiator: %s", err)
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Info("FIX initiator started", "settings", m.cfg.SettingsFile)
|
||||
@ -113,7 +124,10 @@ func (m *Manager) SendQuote(clOrdID, quoteID, symbol, currency string, bidPx, of
|
||||
m.sessionsMu.RUnlock()
|
||||
|
||||
if !ok {
|
||||
return fmt.Errorf("no active FIX session")
|
||||
err := tracerr.Errorf("error sending quote: no active FIX session")
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
q := quote.New(
|
||||
@ -141,7 +155,10 @@ func (m *Manager) SendQuote(clOrdID, quoteID, symbol, currency string, bidPx, of
|
||||
}
|
||||
|
||||
if err := quickfix.SendToTarget(q, sessionID); err != nil {
|
||||
return fmt.Errorf("sending FIX quote: %w", err)
|
||||
err = tracerr.Errorf("error sending FIX quote: %s", err)
|
||||
log.Error().Msg(err.Error())
|
||||
|
||||
return err
|
||||
}
|
||||
|
||||
slog.Info("Quote sent", "clOrdID", clOrdID, "quoteID", quoteID, "symbol", symbol)
|
||||
|
||||
Reference in New Issue
Block a user