private async Task UpdateUnderlyingsCache(UnderlyingChangedEvent e, UnderlyingsCacheModel model) { if (e.OldValue.MdsCode != e.NewValue.MdsCode) { _underlyingsCache.AddOrUpdateByChangedMdsCode(e.OldValue.MdsCode, model); } else { _underlyingsCache.AddOrUpdateByMdsCode(model); } }
public void Remove(UnderlyingsCacheModel underlying) { _lockSlim.EnterWriteLock(); try { _cache.Remove(underlying.MdsCode); } finally { _lockSlim.ExitWriteLock(); } }
public void AddOrUpdateByMdsCode(UnderlyingsCacheModel underlying) { _lockSlim.EnterWriteLock(); try { _cache[underlying.MdsCode] = underlying; } finally { _lockSlim.ExitWriteLock(); } }
public void AddOrUpdateByChangedMdsCode(string oldMdsCode, UnderlyingsCacheModel underlying) { _lockSlim.EnterWriteLock(); try { _cache.Remove(oldMdsCode); _cache.TryAdd(underlying.MdsCode, underlying); } finally { _lockSlim.ExitWriteLock(); } }
public static void SetAssetFieldsFromUnderlying(this Asset asset, UnderlyingsCacheModel underlying) { asset.Underlying.AlmParam = underlying.AlmParam; asset.Underlying.CfiCode = underlying.CfiCode; asset.Underlying.Eligible871m = underlying.Eligible871M; asset.Underlying.Isin = underlying.Isin; asset.Underlying.MdsCode = underlying.MdsCode; asset.Underlying.Name = underlying.Name; asset.Underlying.RepoSurchargePercent = underlying.RepoSurchargePercent; asset.Underlying.Spread = underlying.Spread; asset.Underlying.TradingCurrency = underlying.TradingCurrency; asset.Underlying.CommodityBase = underlying.CommodityBase; asset.Underlying.BaseCurrency = underlying.BaseCurrency; asset.Underlying.IndexName = underlying.IndexName; asset.Underlying.EMIRType = underlying.EmirType; asset.Underlying.CommodityDetails = underlying.CommodityDetails; asset.LastTradingDate = underlying.LastTradingDate?.ToString(DateFormat, CultureInfo.InvariantCulture); asset.ExpiryDate = underlying.ExpiryDate?.ToString(DateFormat, CultureInfo.InvariantCulture); asset.Underlying.MaturityDate = underlying.MaturityDate?.ToString(DateFormat, CultureInfo.InvariantCulture); }
public async Task HandleUnderlyingUpdated(string oldMdsCode, UnderlyingsCacheModel underlying, DateTime timestamp) { Func <Asset, bool> filter = x => x.Underlying.MdsCode == oldMdsCode; await Handle(underlying, filter, LegacyAssetExtensions.SetAssetFieldsFromUnderlying, timestamp); }