using RobotLib.Communication; using System.Collections.Generic; namespace RobotLib { public abstract class DevBase { protected NLog.Logger log { get; private set; } public DevBase(IPublisherSubscriber com) : this(com, new List()) { } public DevBase(IPublisherSubscriber com, List interestedTopics) { log = NLog.LogManager.GetLogger(GetType().ToString()); Com = com; InterestedTopics = interestedTopics; com.NewMessageArrived += Com_NewMessageArrived; } protected List InterestedTopics { get; } protected IPublisherSubscriber Com { get; } protected void Com_NewMessageArrived(object sender, SubscribedMsgArrivedEventArgs e) { if (InterestedTopics.Contains(e.Topic)) { ParseMessage(e.Topic, e.Message); } } protected void SendMessage(string topic, string message) { if (Com.IsConnected) { Com.Publish(topic, message); } else { log.Warn("Not connected! Could not send message: " + message); } } protected virtual void ParseMessage(string fromTopic, string message) { } public virtual void Refresh() { } } }