using System;
using System.Threading.Tasks;
using Aurora.Executors;
using Aurora.Services;
using Aurora.Proto;
using Aurora.RemoteImpl;

namespace Aurora.Executors
{
    public class HostExecutor : BaseExecutor
    {
        RemotePartyServiceImpl _remoteServiceImpl;
        RemotePlaybackServiceImpl _remotePlaybackImpl;
        public HostExecutor()
        {
            _remoteServiceImpl = new RemotePartyServiceImpl();
            _remotePlaybackImpl = new RemotePlaybackServiceImpl();
        }

        public override void Initialize()
        {
            //Register grpc RemoteService with singleton server service
            ServerService.Instance.RegisterService(RemotePartyService.BindService(_remoteServiceImpl));
            ServerService.Instance.RegisterService(RemotePlaybackService.BindService(_remotePlaybackImpl));
        }

        public override async void Close()
        {
            await ServerService.Instance.Stop();
        }

        public override void AddToQueue()
        {
            throw new NotImplementedException();
        }

        public override void GetMembers()
        {
            throw new NotImplementedException();
        }

        public override void GetQueue()
        {
            throw new NotImplementedException();
        }

        public override void RemoveFromQueue()
        {
            throw new NotImplementedException();
        }

        public override void Run()
        {
            throw new NotImplementedException();
        }
    }
}