using System; using System.Threading.Tasks; using System.Collections.ObjectModel; using Aurora.Models; using Aurora.Executors; using Aurora.Services; using Aurora.Proto.Party; using Aurora.Proto.Playback; using Aurora.Proto.Events; using Aurora.RemoteImpl; namespace Aurora.Executors { public class HostExecutor : BaseExecutor { RemotePartyServiceImpl _remotePartyServiceImpl; RemotePlaybackServiceImpl _remotePlaybackImpl; RemoteEventServiceImpl _remoteEventImpl; public HostExecutor() { _remotePartyServiceImpl = new RemotePartyServiceImpl(); _remotePlaybackImpl = new RemotePlaybackServiceImpl(); _remoteEventImpl = new RemoteEventServiceImpl(); } public override void Connect(string hostname) { //Initialize gRPC server ServerService.Instance.Initialize(hostname); //Register grpc RemoteService with singleton server service ServerService.Instance.RegisterService(RemotePartyService.BindService(_remotePartyServiceImpl)); ServerService.Instance.RegisterService(RemotePlaybackService.BindService(_remotePlaybackImpl)); ServerService.Instance.RegisterService(RemoteEventService.BindService(_remoteEventImpl)); //start gRPC server ServerService.Instance.Start(); } #region Properties public override ObservableCollection PartyMembers { get { return _remotePartyServiceImpl.PartyMembers; } } #endregion Properties public override async void Close() { await ServerService.Instance.Stop(); } public override void AddToQueue() { throw new NotImplementedException(); } public override ObservableCollection GetMembers() { throw new NotImplementedException(); } public override void GetQueue() { throw new NotImplementedException(); } public override void RemoveFromQueue() { throw new NotImplementedException(); } } }