// TODO increase default size public KeyValueStore(string name, KeyStoreDataSize dataSize, int cacheSize) { var fileName = name + ".bin"; var useDisk = cacheSize != -1; _memory = new MemoryStore(cacheSize); if (useDisk) { _disk = new DiskStore(fileName, dataSize); } }
public static uint GetMaxAlllowedItemSize(KeyStoreDataSize dataSize) { switch (dataSize) { case KeyStoreDataSize.Small: return(0xFF); case KeyStoreDataSize.Medium: return(0xFFFF); case KeyStoreDataSize.Large: return(0xFFFFFF); case KeyStoreDataSize.Huge: return(0xFFFFFF); default: throw new Exception("invalid data size"); } }
public DiskStore(string fileName, KeyStoreDataSize dataSize) { Throw.If(string.IsNullOrEmpty(fileName), "invalid filename"); this.DataSize = dataSize; //var path = Path.GetDirectoryName(fileName); var path = "Storage"; fileName = path + "/" + Path.GetFileName(fileName); this.fileName = fileName; if (!string.IsNullOrEmpty(path) && !Directory.Exists(path)) { Directory.CreateDirectory(path); } _lastBlockOffset = 0; _stream = null; if (File.Exists(fileName)) { ReadBlocks(); } if (BackgroundWriting) { lock (_globalLock) { if (_diskThread == null) { _diskThread = new Thread(BackgroundTask); _diskThread.Start(); } _storeMap[fileName] = this; } } _ready = true; }
public KeyValueStore(Address address, string name, KeyStoreDataSize dataSize, int cacheSize = 16) : this(address.Text + "_" + name, dataSize, cacheSize) { }
public DiskStorageContext(Address address, string name, KeyStoreDataSize dataSize) { _memory = new MemoryStore(32); _disk = new DiskStore(address.Text + "_" + name, dataSize); }