This commit is contained in:
Ramiro Paz
2026-05-19 15:31:39 -03:00
parent d06433e0f5
commit 1676909cbf

View File

@ -279,10 +279,6 @@ func (m *Manager) handleQuoteAck(msg quoteack.QuoteAck, sessionID quickfix.Sessi
err := tracerr.Errorf("handleQuoteAck: quote rejected by TW (quoteReqID=%s, quoteAckStatus=%s, text=%s)", quoteReqID, string(status), text) err := tracerr.Errorf("handleQuoteAck: quote rejected by TW (quoteReqID=%s, quoteAckStatus=%s, text=%s)", quoteReqID, string(status), text)
slog.Error(err.Error()) slog.Error(err.Error())
m.tradesMu.Lock()
delete(m.trades, quoteReqID)
m.tradesMu.Unlock()
return return
} }
@ -321,9 +317,6 @@ func (m *Manager) handleQuoteResponse(msg quoteresponse.QuoteResponse, sessionID
// _TRDSUMM is the final message — clean up the trade. // _TRDSUMM is the final message — clean up the trade.
if isTrdSumm { if isTrdSumm {
slog.Info("Trade summary received, cleaning up", "quoteReqID", quoteReqID) slog.Info("Trade summary received, cleaning up", "quoteReqID", quoteReqID)
m.tradesMu.Lock()
delete(m.trades, quoteReqID)
m.tradesMu.Unlock()
} }
} }
@ -362,10 +355,6 @@ func (m *Manager) handleExecutionReport(msg executionreport.ExecutionReport, ses
slog.Info("Trade summary received from TW, cleaning up", slog.Info("Trade summary received from TW, cleaning up",
"execID", execID, "clOrdID", clOrdID, "ordStatus", string(ordStatus), "listID", listID) "execID", execID, "clOrdID", clOrdID, "ordStatus", string(ordStatus), "listID", listID)
m.tradesMu.Lock()
delete(m.trades, clOrdID)
m.tradesMu.Unlock()
case execType == enum.ExecType_TRADE: case execType == enum.ExecType_TRADE:
slog.Info("Trade result received from TW", slog.Info("Trade result received from TW",
"execID", execID, "clOrdID", clOrdID, "ordStatus", string(ordStatus), "listID", listID) "execID", execID, "clOrdID", clOrdID, "ordStatus", string(ordStatus), "listID", listID)
@ -421,12 +410,6 @@ func (m *Manager) SendQuote(quoteReqID string, price decimal.Decimal) error {
slog.Error(err.Error()) slog.Error(err.Error())
return err return err
} }
// if t.Quoted {
// m.tradesMu.Unlock()
// err := tracerr.Errorf("SendQuote: quote already sent for quoteReqID %s", quoteReqID)
// slog.Error(err.Error())
// return err
// }
sessionID := t.SessionID sessionID := t.SessionID
if sessionID == (quickfix.SessionID{}) { if sessionID == (quickfix.SessionID{}) {
@ -682,11 +665,6 @@ func (m *Manager) loadActiveTrades() error {
t.Price = getDecimal(msg.JMessage.Body, "Price") t.Price = getDecimal(msg.JMessage.Body, "Price")
} }
case "CW": // QuoteAck — if rejected, trade is dead
if getString(msg.JMessage.Body, "QuoteAckStatus") != string(enum.QuoteAckStatus_ACCEPTED) {
delete(activeTrades, quoteReqID)
}
case "AJ": // QuoteResponse — _TRDSUMM means trade is done (flow 8.6) case "AJ": // QuoteResponse — _TRDSUMM means trade is done (flow 8.6)
if strings.HasSuffix(getString(msg.JMessage.Body, "QuoteRespID"), "_TRDSUMM") { if strings.HasSuffix(getString(msg.JMessage.Body, "QuoteRespID"), "_TRDSUMM") {
delete(activeTrades, quoteReqID) delete(activeTrades, quoteReqID)