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)); }
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)); }
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); }