using System.Threading.Tasks; namespace Kerobot.Services { /// /// Base class for Kerobot services. /// /// /// Services provide the core functionality of this program. Modules are expected to call into methods /// provided by services for the times when processor-intensive or shared functionality needs to be utilized. /// internal abstract class Service { public Kerobot Kerobot { get; } public string Name => this.GetType().Name; public Service(Kerobot kb) => Kerobot = kb; /// /// Creates a log message. /// /// Logging message contents. /// Determines if the log message should be sent to a reporting channel. /// protected Task Log(string message, bool report = false) => Kerobot.InstanceLogAsync(report, Name, message); } }