using RobotLib.Communication; using System.Collections.Generic; using System.Diagnostics; namespace RobotLib { public abstract class DevBase { protected NLog.Logger log { get; private set; } /// /// Creates a base class. /// /// communication instance public DevBase(IPublisherSubscriber com) : this(com, new List()) { } /// /// Creates a base class and initializes interested Topics. /// /// connunication instance /// topics that shall be subscribed to public DevBase(IPublisherSubscriber com, List interestedTopics) { log = NLog.LogManager.GetLogger(GetType().ToString()); Com = com; InterestedTopics = interestedTopics; foreach (var topic in InterestedTopics) { this.Com.Subscribe(topic); } 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() { } } }