Example #1
0
        public void Load(ITemplateTableLoader <TKey, TValue> loader)
        {
            var table = new ConcurrentDictionary <TKey, ValueData>();

            foreach (var i in loader.Load())
            {
                bool added;

                if (i.Value.Value != null)
                {
                    added = table.TryAdd(i.Key, new ValueData {
                        Value = i.Value.Value
                    });
                }
                else if (i.Value.LazyLoader != null)
                {
                    added = table.TryAdd(i.Key, new ValueData {
                        LazyLoader = i.Value.LazyLoader
                    });
                }
                else
                {
                    throw new InvalidOperationException("Empty:" + i.Key);
                }

                if (added == false)
                {
                    throw new InvalidOperationException("Duplicate:" + i.Key);
                }
            }

            _table      = table;
            _ghostTable = new ConcurrentDictionary <TKey, TValue>();
        }
Example #2
0
 public void Update(ITemplateTableLoader <TKey, TValue> loader)
 {
     foreach (var i in loader.Load())
     {
         if (i.Value.Value != null)
         {
             _table[i.Key] = new ValueData {
                 Value = i.Value.Value
             };
         }
         else if (i.Value.LazyLoader != null)
         {
             _table[i.Key] = new ValueData {
                 LazyLoader = i.Value.LazyLoader
             };
         }
         else
         {
             ValueData data;
             _table.TryRemove(i.Key, out data);
         }
     }
 }