/// <summary> /// Клиент распределенного кеша /// </summary> /// <param name="options">Настройки работы клиента</param> /// <param name="comparer">Функция сравнения ключей</param> /// <param name="cache">Внешний кеш. Если не задат то будет использоваться свой внутренний кеш, уникальный на каждый экземпляр этого класса. При заданном значении сторонний код берет на себя переодический вызов ICache.TryFlush</param> public DistributedCacheClient(DistributedCacheClientOptions options, IEqualityComparer <Tk> comparer, ICache <Tk, T> cache = null) { _batchInterval = options.BatchInterval; _batchBlock = new BatchBlock <Tk>(options.BatchSize, new GroupingDataflowBlockOptions() { BoundedCapacity = options.MaxRequestedMessagesCount }); _cache = new ClientCache <Tk, T>(_batchBlock, options.RepeatRequestInterval, comparer, cache); _client = null; _streamFactory = new ChunkedStreamFactory( () => new ByteBuffer(System.Buffers.ArrayPool <byte> .Shared.Rent(MESSAGE_BUFFER)), chunk => System.Buffers.ArrayPool <byte> .Shared.Return(((ByteBuffer)chunk).SwapBuffer())); }
static MessageEnumerator() { _streamFactory = new ChunkedStreamFactory( () => new ByteBuffer(System.Buffers.ArrayPool <byte> .Shared.Rent(MESSAGE_BUFFER)), chunk => System.Buffers.ArrayPool <byte> .Shared.Return(((ByteBuffer)chunk).SwapBuffer())); }