public IEnumerable <string> GetContaining(string key) { key = KeyCharSubstitutor.Convert(key); foreach (var file in DI.GetFiles("*" + key + "*")) { var keyItem = file.Name.Replace(suffix, ""); yield return(Get(keyItem)); } }
public bool Exists(string key) { key = KeyCharSubstitutor.Convert(key); if (_GetFileInfo(key).Exists) { return(true); } return(false); }
public IEnumerable <string> GetKeysStartingWith(string key) { key = KeyCharSubstitutor.Convert(key); foreach (var file in DI.GetFiles(key + "*")) { var keyItem = file.Name.Replace(suffix, ""); keyItem = KeyCharSubstitutor.ConvertBack(keyItem); yield return(keyItem); } }
public void Remove(string key) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(key); if (fi.Exists) { fi.Delete(); } }
public void Set(string key, string value) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(key); if (fi.Exists) { fi.Delete(); } using (var fs = fi.CreateText()) { fs.Write(value); } }
public string Get(string key) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(key); if (!fi.Exists) { return(null); } using (var sr = fi.OpenText()) { return(sr.ReadToEnd()); } }
public void Set(string key, string value, ulong cas) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(casPrefix + key, true); var fiLock = _GetFileInfo(lockPrefix + key, true); if (!fi.Exists) { fi.Create().Dispose(); } using (var swLock = fiLock.Create()) { ulong readCasVal = 0; //get current cas byte[] bytes = null; using (var srCAS = fi.OpenRead()) { bytes = new byte[srCAS.Length]; srCAS.Read(bytes, 0, (int)srCAS.Length); } using (var swCAS = fi.OpenWrite()) { swCAS.Seek(0, SeekOrigin.Begin); if (bytes.Count() > 0) { readCasVal = BitConverter.ToUInt64(bytes, 0); } if (readCasVal != cas) { throw new CASException("CAS expired"); } //do our actual set operation Set(key, value); var bytesToWrite = BitConverter.GetBytes(cas + 1); swCAS.Write(bytesToWrite, 0, bytesToWrite.Count()); swCAS.Flush(); } } fiLock.Delete(); }
public void Append(string key, string value) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(key); if (!fi.Exists) { fi.Create().Dispose(); } using (var fs = fi.OpenWrite()) { fs.Seek(fs.Length, SeekOrigin.Begin); byte[] bytes = Encoding.UTF8.GetBytes(value); fs.Write(bytes, 0, bytes.Length); } }
public string Get(string key, out ulong cas) { key = KeyCharSubstitutor.Convert(key); var fi = _GetFileInfo(casPrefix + key, true); if (fi.Exists) { using (var sr = fi.OpenRead()) { byte[] bytes = new byte[sr.Length]; sr.Read(bytes, 0, (int)sr.Length); if (bytes.Length > 0) { try { cas = BitConverter.ToUInt64(bytes, 0); } catch (Exception ex) { throw new Exception("Data for key " + casPrefix + key + " is not CAS data", ex); } } else { cas = 0; } } } else { cas = 0; } return(this.Get(key)); }
public ulong GetNextSequenceValue(string key, int increment) { key = KeyCharSubstitutor.Convert(key); return(IStoreProviderInternalHelpers.GetNextSequenceValueViaCAS(this, key, increment)); }
public int CountContaining(string key) { key = KeyCharSubstitutor.Convert(key); return(DI.GetFiles("*" + key + "*").Count()); }
public int CountStartingWith(string key) { key = KeyCharSubstitutor.Convert(key); return(DI.GetFiles(key + "*").Count()); }