namespace ElectronNET.Runtime.Controllers
{
    using ElectronNET.API;
    using ElectronNET.Runtime.Services;
    using ElectronNET.Runtime.Services.ElectronProcess;
    using ElectronNET.Runtime.Services.SocketBridge;
    using System.Threading.Tasks;

    internal abstract class RuntimeControllerBase : LifetimeServiceBase, IElectronNetRuntimeController
    {
        protected RuntimeControllerBase()
        {
        }

        internal abstract ISocketConnection Socket { get; }

        internal abstract ElectronProcessBase ElectronProcess { get; }

        internal abstract SocketBridgeService SocketBridge { get; }

        protected override Task StartCore()
        {
            return Task.CompletedTask;
        }

        protected override Task StopCore()
        {
            return Task.CompletedTask;
        }
    }
}