private static void PublishUpdateStocks(StockSubject stockSubject) { stockSubject.UpdateStockValue(new Stock { Name = "AAPL", Value = 3 }); stockSubject.UpdateStockValue(new Stock { Name = "AAPL", Value = 4 }); stockSubject.UpdateStockValue(new Stock { Name = "AAPL", Value = 5 }); stockSubject.UpdateStockValue(new Stock { Name = "AAPL", Value = 6 }); stockSubject.UpdateStockValue(new Stock { Name = "FTSE", Value = 6 }); stockSubject.UpdateStockValue(new Stock { Name = "FTSE", Value = 12 }); stockSubject.UpdateStockValue(new Stock { Name = "FTSE", Value = 2 }); stockSubject.UpdateStockValue(new Stock { Name = "FTSE", Value = 3 }); }
public void RunSimple() { StockSubject stockSubject = new StockSubject(); LondonStockObserver londonObserver = new LondonStockObserver(stockSubject); AaplObserver aaplObserver = new AaplObserver(stockSubject); PublishUpdateStocks(stockSubject); }
public void RunReactiveWithEvents() { StockSubject stockSubject = new StockSubject(); IObservable <EventPattern <StockUpdateEventArgs> > londonObservable = Observable.FromEventPattern <StockUpdateEventArgs>( ev => stockSubject.StockUpdated += ev, ev => stockSubject.StockUpdated -= ev).Where(s => s.EventArgs.Stock.Name == "FTSE"); IObservable <EventPattern <StockUpdateEventArgs> > aaplObservable = Observable.FromEventPattern <StockUpdateEventArgs>( ev => stockSubject.StockUpdated += ev, ev => stockSubject.StockUpdated -= ev).Where(s => s.EventArgs.Stock.Name == "AAPL"); using (londonObservable.Subscribe(PrintLondonStockPriceUpdate)) using (aaplObservable.Subscribe(PrintAaplStockPriceUpdate)) { PublishUpdateStocks(stockSubject); } }
public AaplObserver(StockSubject stockObservable) { stockObservable.StockUpdated += (obj, e) => PrintNewValue(e.Stock); }
public LondonStockObserver(StockSubject stockObservable) { stockObservable.StockUpdated += (obj, e) => PrintStockValue(e.Stock); }