public IEnumerable <ClientDataMeterZoneInfo> GetChanged() { var currentClientDataMeterStates = _getZoneInfos() .Select(x => ClientDataMeterZoneInfo.Create(x, DataMeter)) .ToHashSet(); foreach (var x in currentClientDataMeterStates .Except(_previousClientDataMeterStates)) { yield return(x); } _previousClientDataMeterStates = currentClientDataMeterStates; }
public async Task RequestZonesFor(int dataMeterWebId) { var initialState = GameServer .Instance .SimulationSession .Area .EnumerateZoneInfos() .Select(x => ClientDataMeterZoneInfo.Create(x, DataMeterInstances.DataMeters.Single(y => y.WebId == dataMeterWebId))) .Where(x => !string.IsNullOrWhiteSpace(x.colour)); foreach (var batchState in initialState.GetBatched(100)) { await Clients.Caller.SendAsync("submitDataMeterInfos", batchState); } }