using System; using System.Collections.Generic; namespace BlubbFish.Utils.IoT.Connector { public abstract class ADataBackend { public abstract event MqttMessage MessageIncomming; public abstract event MqttMessage MessageSending; public delegate void MqttMessage(Object sender, MqttEventArgs e); public static ADataBackend GetInstance(Dictionary settings) { if(settings.Count == 0) { return null; } String object_sensor = "BlubbFish.Utils.IoT.Connector.Data." + Char.ToUpper(settings["type"][0]) + settings["type"].Substring(1).ToLower()+", "+ "ConnectorData" + Char.ToUpper(settings["type"][0]) + settings["type"].Substring(1).ToLower(); Type t = null; try { t = Type.GetType(object_sensor, true); } catch (TypeLoadException) { Console.Error.WriteLine("settings.ini: " + settings["type"] + " is not a DataBackend"); return null; } catch(System.IO.FileNotFoundException) { Console.Error.WriteLine("Driver " + settings["type"] + " could not load!"); return null; } return (ADataBackend)t.GetConstructor(new Type[] { typeof(Dictionary) }).Invoke(new Object[] { settings }); } public abstract void Send(String topic, String data); public abstract void Dispose(); } }