/// <summary> /// Replays events for the LimitOrderBooks to rebuild them to their prior state /// </summary> public void ReplayOrderBooks(Exchange exchange, Journaler journaler) { exchange.TurnReplayModeOn(); foreach (var exchangeEssential in exchange.ExchangeEssentials) { List <Order> ordersForReplay = journaler.GetOrdersForReplay(exchangeEssential.LimitOrderBook); if (ordersForReplay != null) { Order[] deepCopy = (Order[])GetCopy(ordersForReplay.ToArray()); foreach (var order in deepCopy) { if (order.OrderState == OrderState.Accepted) { exchange.PlaceNewOrder(order); } else if (order.OrderState == OrderState.Cancelled) { exchange.CancelOrder(new OrderCancellation(order.OrderId, order.TraderId, order.CurrencyPair)); } } } } exchange.TurnReplayModeOff(); }