Пример #1
0
 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();
            }
        }
Пример #5
0
 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);
 }
Пример #6
0
        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);
        }