Пример #1
0
        public void Put <TK, TV>(TK key, TV value, WriteOptions options, Func <TK, byte[]> keyEncoder, Func <TV, byte[]> valueEncoder)
        {
            if (null == keyEncoder)
            {
                throw new ArgumentNullException(nameof(keyEncoder));
            }
            if (null == valueEncoder)
            {
                throw new ArgumentNullException(nameof(valueEncoder));
            }

            var realKey = keyEncoder(key);

            if (null == realKey)
            {
                throw new ArgumentNullException(nameof(realKey));
            }

            var realValue = valueEncoder(value);

            if (null == realValue)
            {
                _LevelDb.Delete(options, Slice.FromByteArray(realKey));
                return;
            }

            _LevelDb.Put(options, Slice.FromByteArray(realKey), Slice.FromByteArray(realValue));
        }
Пример #2
0
        public void Delete <TK>(TK key, WriteOptions options, Func <TK, byte[]> keyEncoder)
        {
            var realKey = keyEncoder(key);

            if (null == realKey)
            {
                throw new ArgumentNullException(nameof(realKey));
            }

            _LevelDb.Delete(options, Slice.FromByteArray(realKey));
        }
Пример #3
0
        public TV Get <TK, TV>(TK key, ReadOptions options, Func <TK, byte[]> keyEncoder, Func <byte[], TV> valueDecoder)
        {
            if (null == keyEncoder)
            {
                throw new ArgumentNullException(nameof(keyEncoder));
            }
            if (null == valueDecoder)
            {
                throw new ArgumentNullException(nameof(valueDecoder));
            }

            var realKey = keyEncoder(key);

            if (null == realKey)
            {
                throw new ArgumentNullException(nameof(realKey));
            }

            var realValue = _LevelDb.Get(options, Slice.FromByteArray(realKey));
            var value     = valueDecoder(realValue?.ToByteArray());

            return(value);
        }