Skip to content

Commit

Permalink
bbgo: call clear to reset map
Browse files Browse the repository at this point in the history
  • Loading branch information
c9s committed Jan 17, 2025
1 parent 1bdd388 commit de2ac7e
Show file tree
Hide file tree
Showing 2 changed files with 22 additions and 3 deletions.
14 changes: 11 additions & 3 deletions pkg/bbgo/activeorderbook.go
Original file line number Diff line number Diff line change
Expand Up @@ -24,14 +24,14 @@ const DefaultOrderCancelTimeout = 5 * time.Second
//go:generate callbackgen -type ActiveOrderBook
type ActiveOrderBook struct {
Symbol string
orders *types.SyncOrderMap

orders *types.SyncOrderMap
pendingOrderUpdates *types.SyncOrderMap

newCallbacks []func(o types.Order)
filledCallbacks []func(o types.Order)
canceledCallbacks []func(o types.Order)

pendingOrderUpdates *types.SyncOrderMap

// sig is the order update signal
// this signal will be emitted when a new order is added or removed.
C sigchan.Chan
Expand Down Expand Up @@ -291,13 +291,21 @@ func (b *ActiveOrderBook) GracefulCancel(ctx context.Context, ex types.Exchange,
}

}
}

if cancelAll {
b.clear()
}

log.Debugf("[ActiveOrderBook] all %s orders are cancelled successfully in %s", b.Symbol, time.Since(startTime))
return nil
}

func (b *ActiveOrderBook) clear() {
b.orders.Clear()
b.pendingOrderUpdates.Clear()
}

func (b *ActiveOrderBook) orderUpdateHandler(order types.Order) {
if oldOrder, ok := b.Get(order.OrderID); ok {
order.Tag = oldOrder.Tag
Expand Down
11 changes: 11 additions & 0 deletions pkg/types/ordermap.go
Original file line number Diff line number Diff line change
Expand Up @@ -55,6 +55,10 @@ func (m OrderMap) Remove(orderID uint64) {
delete(m, orderID)
}

func (m *OrderMap) Clear() {
*m = make(OrderMap, 10)
}

func (m OrderMap) IDs() (ids []uint64) {
for id := range m {
ids = append(ids, id)
Expand Down Expand Up @@ -123,6 +127,13 @@ func (m *SyncOrderMap) Backup() (orders []SubmitOrder) {
return orders
}

func (m *SyncOrderMap) Clear() {
m.Lock()
m.orders.Clear()
m.pendingRemoval = make(map[uint64]time.Time, 10)
m.Unlock()
}

func (m *SyncOrderMap) Remove(orderID uint64) (exists bool) {
m.Lock()
defer m.Unlock()
Expand Down

0 comments on commit de2ac7e

Please sign in to comment.