/// <summary> /// Returns an encoder instance based on the transcoding name (e.g json, bson). /// </summary> /// <param name="name">The transcoding name.</param> /// <returns></returns> /// <exception cref="System.Collections.Generic.KeyNotFoundException">Could not locate an encoder for '{name}'.</exception> public IResonanceEncoder GetEncoder(string name) { lock (_initLock) { IResonanceEncoder encoder = null; if (_encoders.TryGetValue(name, out encoder)) { return(encoder); } Dictionary <String, IResonanceEncoder> encoders = new Dictionary <string, IResonanceEncoder>(); foreach (var type in AppDomain.CurrentDomain.GetAssemblies().SelectMany(x => x.GetTypes()).Where(x => x.GetCustomAttribute <ResonanceTranscodingAttribute>() != null && typeof(ResonanceEncoder).IsAssignableFrom(x))) { encoders.Add(type.GetCustomAttribute <ResonanceTranscodingAttribute>().Name, Activator.CreateInstance(type) as IResonanceEncoder); } foreach (var d in encoders) { _encoders[d.Key] = d.Value; } if (encoders.TryGetValue(name, out encoder)) { return(encoder); } throw new KeyNotFoundException($"Could not locate an encoder for '{name}'."); } }
public static void Read_Write_Test(ResonanceTest test, IResonanceAdapter adapter1, IResonanceAdapter adapter2, IResonanceEncoder encoder, IResonanceDecoder decoder, bool enableCryptography, int count, int maxOutliersPercentage) { IResonanceTransporter t1 = ResonanceTransporter.Builder .Create() .WithAdapter(adapter1) .WithTranscoding(encoder, decoder) .NoKeepAlive() .Build(); IResonanceTransporter t2 = ResonanceTransporter.Builder .Create() .WithAdapter(adapter2) .WithTranscoding(encoder, decoder) .NoKeepAlive() .Build(); Read_Write_Test(test, t1, t2, enableCryptography, count, maxOutliersPercentage); }
public static void Read_Write_Test(ResonanceTest test, IResonanceEncoder encoder, IResonanceDecoder decoder, bool enableCryptography, int count, int maxOutliersPercentage) { Read_Write_Test(test, new InMemoryAdapter("TST"), new InMemoryAdapter("TST"), encoder, decoder, enableCryptography, count, maxOutliersPercentage); }