using System.Collections.Generic;
using System.Threading.Tasks;

namespace SharedLibraryCore.Interfaces
{
    /// <summary>
    ///     represents the abstraction of game log reading
    /// </summary>
    public interface IGameLogReader
    {
        /// <summary>
        ///     how long the log file is
        /// </summary>
        long Length { get; }

        /// <summary>
        ///     how often to poll the log file
        /// </summary>
        int UpdateInterval { get; }

        /// <summary>
        ///     get new events that have occured since the last poll
        /// </summary>
        /// <param name="fileSizeDiff"></param>
        /// <param name="startPosition"></param>
        /// <param name="server"></param>
        /// <returns></returns>
        Task<IEnumerable<GameEvent>> ReadEventsFromLog(long fileSizeDiff, long startPosition, Server server);
    }
}