namespace Assets.Message.Decoding { public abstract class BaseMessageDecodingJobHandler : IMessageDecodingJobHandler { public bool Harvesting { get; private set; } public abstract string Topic { get; } public DecodedPublishedMessage Harvest() { if (!IsCompleted()) throw new System.Exception("Tried to Harvest an unfinished Job"); Harvesting = true; return DoHarvest(); } protected abstract DecodedPublishedMessage DoHarvest(); public abstract bool IsCompleted(); public abstract void Start(); } }