Example #1
0
        private FasterKV <TData, TData> Setup <TData>()
        {
            log    = new LocalMemoryDevice(1L << 26, 1L << 22, 2, sector_size: smallSector ? 64 : (uint)512, fileName: $"{path}{typeof(TData).Name}.log");
            objlog = serializerSettingsObj is null
                ? null
                : new LocalMemoryDevice(1L << 26, 1L << 22, 2, fileName: $"{path}{typeof(TData).Name}.obj.log");

            var varLenStruct = this.varLenStructObj as IVariableLengthStruct <TData>;

            Assert.AreEqual(this.varLenStructObj is null, varLenStruct is null, "varLenStructSettings");
            VariableLengthStructSettings <TData, TData> varLenStructSettings = varLenStruct is null
                ? null
                : new VariableLengthStructSettings <TData, TData> {
                keyLength = varLenStruct, valueLength = varLenStruct
            };

            var result = new FasterKV <TData, TData>(DeviceTypeRecoveryTests.keySpace,
                                                     new LogSettings {
                LogDevice = log, ObjectLogDevice = objlog, SegmentSizeBits = 25
            },
                                                     new CheckpointSettings {
                CheckpointDir = path
            },
                                                     this.serializerSettingsObj as SerializerSettings <TData, TData>,
                                                     variableLengthStructSettings: varLenStructSettings
                                                     );

            fhtDisp = result;
            return(result);
        }
 public KeyValueStore(string folder, int logSizeBits, IFasterEqualityComparer <TKey> keyComparer, TFunctions functions, IVariableLengthStruct <TKey> keyLength, IVariableLengthStruct <TValue> valueLength)
 {
     _dataFolder          = folder;
     _logSizeBits         = logSizeBits;
     _keyComparer         = keyComparer;
     _functions           = functions;
     _variableLenSettings = new VariableLengthStructSettings <TKey, TValue>
     {
         keyLength   = keyLength,
         valueLength = valueLength
     };
 }
Example #3
0
        /// <summary>
        /// Iterator for all (distinct) live key-values stored in FASTER
        /// </summary>
        /// <param name="untilAddress">Report records until this address (tail by default)</param>
        /// <returns>FASTER iterator</returns>
        public IFasterScanIterator <Key, Value> Iterate(long untilAddress = -1)
        {
            if (untilAddress == -1)
            {
                untilAddress = Log.TailAddress;
            }

            if (hlog is VariableLengthBlittableAllocator <Key, Value> varLen)
            {
                var functions = new LogVariableCompactFunctions <Key, Value, DefaultVariableCompactionFunctions <Key, Value> >(varLen, default);
                var variableLengthStructSettings = new VariableLengthStructSettings <Key, Value>
                {
                    keyLength   = varLen.KeyLength,
                    valueLength = varLen.ValueLength,
                };

                return(new FasterKVIterator <Key, Value, LogVariableCompactFunctions <Key, Value, DefaultVariableCompactionFunctions <Key, Value> >, DefaultVariableCompactionFunctions <Key, Value> >
                           (this, functions, default, untilAddress, variableLengthStructSettings));