public EventManager(Framework framework, EventBus bus) { this.framework = framework; this.bus = bus; BarFactory = new BarFactory(this.framework); BarSliceFactory = new BarSliceFactory(this.framework); Dispatcher = new EventDispatcher(this.framework); // Event Gates this.gates[EventType.Bid] = OnBid; this.gates[EventType.Ask] = OnAsk; this.gates[EventType.Trade] = OnTrade; this.gates[EventType.Quote] = OnQuote; this.gates[EventType.Bar] = OnBar; this.gates[EventType.Level2Snapshot] = OnLevel2Snapshot; this.gates[EventType.Level2Update] = OnLevel2Update; this.gates[EventType.ExecutionReport] = OnExecutionReport; this.gates[EventType.Reminder] = OnReminder; this.gates[EventType.Fundamental] = OnFundamental; this.gates[EventType.News] = OnNews; this.gates[EventType.Group] = OnGroup; this.gates[EventType.GroupEvent] = OnGroupEvent; this.gates[EventType.Command] = OnCommand; this.gates[EventType.OnPositionOpened] = OnPositionOpened; this.gates[EventType.OnPositionClosed] = OnPositionClosed; this.gates[EventType.OnPositionChanged] = OnPositionChanged; this.gates[EventType.OnFill] = OnFill; this.gates[EventType.OnTransaction] = OnTransaction; this.gates[EventType.OnSendOrder] = OnSendOrder; this.gates[EventType.OnPendingNewOrder] = OnPendingNewOrder; this.gates[EventType.OnNewOrder] = OnNewOrder; this.gates[EventType.OnOrderStatusChanged] = OnOrderStatusChanged; this.gates[EventType.OnOrderPartiallyFilled] = OnOrderPartiallyFilled; this.gates[EventType.OnOrderFilled] = OnOrderFilled; this.gates[EventType.OnOrderReplaced] = OnOrderReplaced; this.gates[EventType.OnOrderCancelled] = OnOrderCancelled; this.gates[EventType.OnOrderRejected] = OnOrderRejected; this.gates[EventType.OnOrderExpired] = OnOrderExpired; this.gates[EventType.OnOrderCancelRejected] = OnOrderCancelRejected; this.gates[EventType.OnOrderReplaceRejected] = OnOrderReplaceRejected; this.gates[EventType.OnOrderDone] = OnOrderDone; this.gates[EventType.OnPortfolioAdded] = OnPortfolioAdded; this.gates[EventType.OnPortfolioRemoved] = OnPortfolioRemoved; this.gates[EventType.OnPortfolioParentChanged] = OnPortfolioParentChanged; this.gates[EventType.HistoricalData] = OnHistoricalData; this.gates[EventType.HistoricalDataEnd] = OnHistoricalDataEnd; this.gates[EventType.BarSlice] = OnBarSlice; this.gates[EventType.OnStrategyEvent] = OnStrategyEvent; this.gates[EventType.AccountData] = OnAccountData; this.gates[EventType.OnPropertyChanged] = OnPropertyChanged; this.gates[EventType.OnException] = OnException; this.gates[EventType.AccountReport] = OnAccountReport; this.gates[EventType.ProviderError] = OnProviderError; this.gates[EventType.OnProviderConnected] = OnProviderConnected; this.gates[EventType.OnProviderDisconnected] = OnProviderDisconnected; this.gates[EventType.OnSimulatorStart] = OnSimulatorStart; this.gates[EventType.OnSimulatorStop] = OnSimulatorStop; this.gates[EventType.OnSimulatorProgress] = OnSimulatorProgress; // Enable all events by defaults for (int i = 0; i < byte.MaxValue; i++) Enabled[i] = true; if (bus != null) { this.thread = new Thread(Run) { Name = "Event Manager Thread", IsBackground = true }; this.thread.Start(); } }
public EventClient(EventDispatcher dispatcher) { this.dispatcher = dispatcher; Id = counter++; dispatcher.Add(this); }