diff --git a/engine/subsystem_types.go b/engine/subsystem_types.go index 5b245f75..e6433775 100644 --- a/engine/subsystem_types.go +++ b/engine/subsystem_types.go @@ -53,6 +53,7 @@ type iCommsManager interface { // iOrderManager defines a limited scoped order manager type iOrderManager interface { + IsRunning() bool Exists(*order.Detail) bool Add(*order.Detail) error Cancel(context.Context, *order.Cancel) error diff --git a/engine/websocketroutine_manager.go b/engine/websocketroutine_manager.go index ff56ad58..55bb7442 100644 --- a/engine/websocketroutine_manager.go +++ b/engine/websocketroutine_manager.go @@ -22,9 +22,6 @@ func setupWebsocketRoutineManager(exchangeManager iExchangeManager, orderManager if exchangeManager == nil { return nil, errNilExchangeManager } - if orderManager == nil { - return nil, errNilOrderManager - } if syncer == nil { return nil, errNilCurrencyPairSyncer } @@ -287,6 +284,9 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int } m.syncer.PrintOrderbookSummary(base, "websocket", nil) case *order.Detail: + if !m.orderManager.IsRunning() { + return nil + } if !m.orderManager.Exists(d) { err := m.orderManager.Add(d) if err != nil { @@ -310,6 +310,9 @@ func (m *WebsocketRoutineManager) websocketDataHandler(exchName string, data int m.printOrderSummary(od, true) } case []order.Detail: + if !m.orderManager.IsRunning() { + return nil + } for x := range d { if !m.orderManager.Exists(&d[x]) { err := m.orderManager.Add(&d[x]) diff --git a/engine/websocketroutine_manager_test.go b/engine/websocketroutine_manager_test.go index 3d175334..a864d52a 100644 --- a/engine/websocketroutine_manager_test.go +++ b/engine/websocketroutine_manager_test.go @@ -21,12 +21,7 @@ func TestWebsocketRoutineManagerSetup(t *testing.T) { t.Errorf("error '%v', expected '%v'", err, errNilExchangeManager) } - _, err = setupWebsocketRoutineManager(NewExchangeManager(), nil, nil, nil, false) - if !errors.Is(err, errNilOrderManager) { - t.Errorf("error '%v', expected '%v'", err, errNilOrderManager) - } - - _, err = setupWebsocketRoutineManager(NewExchangeManager(), &OrderManager{}, nil, nil, false) + _, err = setupWebsocketRoutineManager(NewExchangeManager(), (*OrderManager)(nil), nil, nil, false) if !errors.Is(err, errNilCurrencyPairSyncer) { t.Errorf("error '%v', expected '%v'", err, errNilCurrencyPairSyncer) } diff --git a/engine/websocketroutine_manager_types.go b/engine/websocketroutine_manager_types.go index c6d2bccf..17780f26 100644 --- a/engine/websocketroutine_manager_types.go +++ b/engine/websocketroutine_manager_types.go @@ -8,7 +8,6 @@ import ( ) var ( - errNilOrderManager = errors.New("nil order manager received") errNilCurrencyPairSyncer = errors.New("nil currency pair syncer received") errNilCurrencyConfig = errors.New("nil currency config received") errNilCurrencyPairFormat = errors.New("nil currency pair format received")