public async Task ProcessStreamItem(StreamMarket market) { StreamMarket currentMarket = null; bool found = _markets.TryGetValue(market.Id, out currentMarket); switch (market.Operation) { case StreamOperation.Insert: case StreamOperation.Update: if (!found || currentMarket.Compare(market) != 0) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(market); } } _markets[market.Id] = market; break; case StreamOperation.Delete: if (found) { if (_persistenceLayer != null) { await _persistenceLayer.ProcessStreamItem(market); } _markets.TryRemove(market.Id, out currentMarket); } break; default: break; } }
private async Task InsertMarket(StreamMarket market) { var CallSPCmd = new SqlCommand(); await DoSqlCmd(CallSPCmd, () => { var Id = int.Parse(market.Id.Split(':')[1]); CallSPCmd.CommandText = "exec InsertMarket @Id, @Name, @Timestamp"; CallSPCmd.Parameters.Add("@Id", SqlDbType.Int).Value = Id; CallSPCmd.Parameters.Add("@Name", SqlDbType.NVarChar).Value = market.Name; CallSPCmd.Parameters.Add("@Timestamp", SqlDbType.DateTime).Value = market.Date; }); }
public virtual Task MarketUpdated(StreamMarket streamItem) { return(Task.CompletedTask); }
public override Task MarketUpdated(StreamMarket streamItem) { return(_dataLayer.ProcessStreamItem(streamItem)); }