private void RegisterFileSystemWatcher() { fileSystemWatcher.Changed += (sender, args) => { ID = new ID(); ProcessFile(args.FullPath); if (args.FullPath.EndsWith(".exe") || args.FullPath.EndsWith(".dll")) { ServerHandler.LogMessage("[lwshost] [Updated File] " + args.FullPath); } }; fileSystemWatcher.Created += (sender, args) => { ProcessFile(args.FullPath); if (args.FullPath.EndsWith(".exe") || args.FullPath.EndsWith(".dll")) { ServerHandler.LogMessage("[lwshost] [Added File] " + args.FullPath); } }; fileSystemWatcher.Renamed += (sender, args) => { if (TypesPerFile.ContainsKey(args.OldFullPath)) { TypesPerFile[args.FullPath] = TypesPerFile[args.OldFullPath]; TypesPerFile.Remove(args.OldFullPath); } ServerHandler.LogMessage("[lwshost] [Renamed File] " + args.FullPath); }; fileSystemWatcher.EnableRaisingEvents = true; }
/// <summary> /// generates a 128 bit AES hash that is not used in pagenames /// </summary> /// <returns></returns> public static string GenerateUnusedHash() { GENERATE_NEW_HASH: string hash = Hash.GetHash(); // Chris: if(hash already exists in any hash list) {goto GENERATE_NEW_HASH;} if (UserInfos.ContainsKey(hash)) { goto GENERATE_NEW_HASH; } if (PerFileObjects.ContainsKey(hash)) { goto GENERATE_NEW_HASH; } return(hash); }
public void ExecuteTestHashMap() { List <string> hashes = new List <string>(); List <string> values = new List <string>(); const int size = 1000; Console.WriteLine("Small Tests..."); Assert.IsTrue(hashmap.Count == 0); hashmap.Add(new KeyValuePair <string, string>("key", "value")); Assert.IsTrue(hashmap.ContainsKey("key")); Assert.IsFalse(hashmap.ContainsKey("value")); Assert.IsTrue(hashmap["key"] == "value"); Assert.IsTrue(hashmap.Count == 1); hashmap.Validate(); hashmap.Add(new KeyValuePair <string, string>("key", "value2")); Assert.IsTrue(hashmap.ContainsKey("key")); Assert.IsFalse(hashmap.ContainsKey("value")); Assert.IsTrue(hashmap["key"] == "value2"); Assert.IsTrue(hashmap.Count == 1); hashmap.Validate(); hashmap.Add(new KeyValuePair <string, string>("key", "avalue")); Assert.IsTrue(hashmap.ContainsKey("key")); Assert.IsFalse(hashmap.ContainsKey("value")); Assert.IsTrue(hashmap["key"] == "avalue"); Assert.IsTrue(hashmap.Count == 1); hashmap.Validate(); Assert.IsFalse(hashmap.Remove("value")); Assert.IsTrue(hashmap.Remove("key")); hashmap.Validate(); Assert.IsTrue(hashmap.Count == 0); hashmap.Add(new KeyValuePair <string, string>("key", "value2")); Assert.IsTrue(hashmap.Count == 1); hashmap.Clear(); Assert.IsTrue(hashmap.Count == 0); hashmap.Add(new KeyValuePair <string, string>("key", "value")); Assert.IsTrue(hashmap.ContainsKey("key")); Assert.IsFalse(hashmap.ContainsKey("value")); Assert.IsTrue(hashmap["key"] == "value"); Assert.IsTrue(hashmap.Count == 1); hashmap.Validate(); hashmap.Clear(); Assert.IsFalse(hashmap.Remove("")); Assert.IsFalse(hashmap.Remove(new KeyValuePair <string, string>("", ""))); Console.WriteLine("Adding..."); for (int i = 0; i < size; i++) { Assert.IsTrue(hashmap.Count == i); hashes.Add(Hash.GetHash()); values.Add(Hash.GetHash()); hashmap[hashes[i]] = values[i]; Assert.IsTrue(hashmap[hashes[i]] == values[i]); Assert.IsTrue(hashmap.Keys.Contains(hashes[i])); Assert.IsTrue(hashmap.Values.Contains(values[i])); hashmap.Validate(); } Console.WriteLine("Overriding..."); for (int i = 0; i < size; i++) { Assert.IsTrue(hashmap[hashes[i]] == values[i]); values[i] = Hash.GetHash(); hashmap[hashes[i]] = values[i]; Assert.IsTrue(hashmap.Count == size); } Console.WriteLine("Checking..."); for (int i = 0; i < size; i++) { Assert.IsTrue(hashmap[hashes[i]] == values[i]); Assert.IsTrue(hashmap.Keys.Contains(hashes[i])); Assert.IsTrue(hashmap.Values.Contains(values[i])); } Console.WriteLine("Validating..."); hashmap.Validate(); Serializer.WriteXmlData(hashmap, nameof(hashmap)); hashmap = Serializer.ReadXmlData <AVLHashMap <string, string> >(nameof(hashmap)); hashmap.Validate(); Console.WriteLine("Deleting..."); for (int i = 0; i < size; i++) { Assert.IsTrue(hashmap.Count == size - i); Assert.IsTrue(hashmap.ContainsKey(hashes[i])); Assert.IsTrue(hashmap[hashes[i]] != default(string)); Assert.IsTrue(hashmap.Remove(hashes[i])); Assert.IsFalse(hashmap.Keys.Contains(hashes[i])); Assert.IsFalse(hashmap.Values.Contains(values[i])); if (true) { for (int j = i + 1; j < size; j++) { Assert.IsFalse(hashmap[hashes[j]].Contains(hashes[j])); } for (int j = 0; j < i; j++) { Assert.IsFalse(hashmap.Remove(hashes[j])); } } Assert.IsTrue(hashmap[hashes[i]] == default(string)); hashmap.Validate(); } Serializer.WriteXmlData(hashmap, nameof(hashmap)); hashmap = Serializer.ReadXmlData <AVLHashMap <string, string> >(nameof(hashmap)); hashmap.Validate(); }