// TODO: this was put(K key, V value, bool notifyWriter);
        public V AddOrUpdate(K key, V value, bool notifyWriter)
        {
            RequireNonNull <V>(value);

            V oldValue = default(V);

            if ((writer == DisabledCacheWriter <K, V> .Instance) || !notifyWriter)
            {
                if (data.TryAdd(key, value))
                {
                    oldValue = value;
                }
            }
            else
            {
                data.AddOrUpdate(key, value, (k, v) =>
                {
                    if (!EqualityComparer <V> .Default.Equals(value, v))
                    {
                        writer.Write(key, value);
                    }

                    oldValue = v;
                    return(value);
                });
            }

            if (HasRemovalListener)
            {
                if (!EqualityComparer <V> .Default.Equals(oldValue, default(V)))
                {
                    if (!EqualityComparer <V> .Default.Equals(oldValue, value))
                    {
                        NotifyRemoval(key, oldValue, RemovalCause.REPLACED);
                    }
                }
            }

            return(oldValue);
        }
Esempio n. 2
0
        public void Append(long sequence, object[] values)
        {
            object[] data = new object[values.Length + 1];
            data[0] = sequence;
            int index = 1;

            foreach (object value in values)
            {
                data[index] = value;
                index++;
            }

            cacheWriter.Write(header.IdentityCode, data);
        }
Esempio n. 3
0
        public void Append(DateTime time, object[] values)
        {
            object[] data = new object[values.Length + 1];
            data[0] = time.Ticks;
            int index = 1;

            foreach (object value in values)
            {
                data[index] = value;
                index++;
            }

            cacheWriter.Write(header.IdentityCode, data);
        }
Esempio n. 4
0
 public void Append(long datafeedHashKey, Guid sessionId, SessionModeOption sessionMode)
 {
     cacheWriter.Write(CACHE_CONFIG_FILE, datafeedHashKey, sessionId, sessionMode);
 }