From 6503d2c4105b3cc48ef623aa811b592584fbcdcd Mon Sep 17 00:00:00 2001 From: watsonb8 Date: Fri, 31 May 2019 10:17:14 -0400 Subject: [PATCH 1/8] Protobufs compile --- Aurora.gtk/Aurora.gtk.csproj | 16 +++ Aurora.gtk/packages.config | 6 + Aurora/Aurora.csproj | 135 ++++++++++++------ Aurora/Backend/Proto/PartyService/party.proto | 34 +++++ .../Proto/PlaybackService/playback.proto | 21 +++ Aurora/Backend/Proto/general.proto | 10 ++ .../Services/Server/PartyServiceImpl.cs | 10 ++ .../Services/Server/PlaybackServiceImpl.cs | 10 ++ .../Backend/Services/Server/ServerService.cs | 28 ++++ 9 files changed, 228 insertions(+), 42 deletions(-) create mode 100644 Aurora/Backend/Proto/PartyService/party.proto create mode 100644 Aurora/Backend/Proto/PlaybackService/playback.proto create mode 100644 Aurora/Backend/Proto/general.proto create mode 100644 Aurora/Backend/Services/Server/PartyServiceImpl.cs create mode 100644 Aurora/Backend/Services/Server/PlaybackServiceImpl.cs create mode 100644 Aurora/Backend/Services/Server/ServerService.cs diff --git a/Aurora.gtk/Aurora.gtk.csproj b/Aurora.gtk/Aurora.gtk.csproj index 570b39c..aba093d 100644 --- a/Aurora.gtk/Aurora.gtk.csproj +++ b/Aurora.gtk/Aurora.gtk.csproj @@ -1,5 +1,6 @@ + Debug @@ -110,6 +111,19 @@ ..\packages\LibVLCSharp.Forms.GTK.3.0.0\lib\net47\LibVLCSharp.Forms.Platforms.GTK.dll + + ..\packages\Google.Protobuf.3.8.0\lib\net45\Google.Protobuf.dll + + + ..\packages\System.Interactive.Async.3.2.0\lib\net46\System.Interactive.Async.dll + + + ..\packages\Grpc.Core.Api.1.21.0\lib\net45\Grpc.Core.Api.dll + + + + ..\packages\Grpc.Core.1.21.0\lib\net45\Grpc.Core.dll + @@ -463,4 +477,6 @@ + + \ No newline at end of file diff --git a/Aurora.gtk/packages.config b/Aurora.gtk/packages.config index 1d268c1..04695b6 100644 --- a/Aurora.gtk/packages.config +++ b/Aurora.gtk/packages.config @@ -1,5 +1,10 @@  + + + + + @@ -7,6 +12,7 @@ + diff --git a/Aurora/Aurora.csproj b/Aurora/Aurora.csproj index ad3b7f1..c6ad3b5 100644 --- a/Aurora/Aurora.csproj +++ b/Aurora/Aurora.csproj @@ -1,43 +1,94 @@ - - - - netstandard2.0 - true - - - - pdbonly - true - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Player.xaml - - + + + netstandard2.0 + true + + + pdbonly + true + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Player.xaml + + + + + + + \ No newline at end of file diff --git a/Aurora/Backend/Proto/PartyService/party.proto b/Aurora/Backend/Proto/PartyService/party.proto new file mode 100644 index 0000000..db844b7 --- /dev/null +++ b/Aurora/Backend/Proto/PartyService/party.proto @@ -0,0 +1,34 @@ +syntax = "proto3"; + +package Aurora.Backend.Proto; + +// PartyServic definition +service PartyService{ + //Party Service + rpc JoinParty(JoinPartyRequest) returns (JoinPartyResponse); + rpc LeaveParty(LeavePartyRequest) returns (LeavePartyResponse); +} + +message JoinPartyRequest { + string clientId = 1; + string userName = 2; + string ipAddress = 3; + string port = 4; +} + +message JoinPartyResponse { + PartyJoinedStatusEnum status = 1; +} + +message LeavePartyRequest { + string clientId = 1; +} + +message LeavePartyResponse { + PartyJoinedStatusEnum status = 1; +} + +enum PartyJoinedStatusEnum { + Connected = 0; + Disconnected = 1; +} diff --git a/Aurora/Backend/Proto/PlaybackService/playback.proto b/Aurora/Backend/Proto/PlaybackService/playback.proto new file mode 100644 index 0000000..8ed189a --- /dev/null +++ b/Aurora/Backend/Proto/PlaybackService/playback.proto @@ -0,0 +1,21 @@ +syntax = "proto3"; + +package Aurora.Backend.Proto; + +import "Backend/Proto/general.proto"; + +service PlaybackService { + //Playback Service + rpc GetPartyStream(Empty) returns (stream Chunk) {}; +} + +enum TransferStatusCode { + Unknown = 0; + Ok = 1; + Failed = 2; +} + +message TransferStatus { + string Message = 1; + TransferStatusCode Code = 2; +} \ No newline at end of file diff --git a/Aurora/Backend/Proto/general.proto b/Aurora/Backend/Proto/general.proto new file mode 100644 index 0000000..4ad5e7a --- /dev/null +++ b/Aurora/Backend/Proto/general.proto @@ -0,0 +1,10 @@ +syntax = "proto3"; + +package Aurora.Backend.Proto; + +message Chunk { + bytes Content = 1; +} + +message Empty{ +} \ No newline at end of file diff --git a/Aurora/Backend/Services/Server/PartyServiceImpl.cs b/Aurora/Backend/Services/Server/PartyServiceImpl.cs new file mode 100644 index 0000000..9367ad8 --- /dev/null +++ b/Aurora/Backend/Services/Server/PartyServiceImpl.cs @@ -0,0 +1,10 @@ +using System; +using Aurora.Backend.Proto; + +namespace Aurora.Backend.Services.Server +{ + class PartyServiceImpl : PartyService.PartyServiceBase + { + + } +} \ No newline at end of file diff --git a/Aurora/Backend/Services/Server/PlaybackServiceImpl.cs b/Aurora/Backend/Services/Server/PlaybackServiceImpl.cs new file mode 100644 index 0000000..33ba9f1 --- /dev/null +++ b/Aurora/Backend/Services/Server/PlaybackServiceImpl.cs @@ -0,0 +1,10 @@ +using System; +using Aurora.Backend.Proto; + +namespace Aurora.Backend.Services.Server +{ + class PlaybackServiceImpl : PlaybackService.PlaybackServiceBase + { + + } +} \ No newline at end of file diff --git a/Aurora/Backend/Services/Server/ServerService.cs b/Aurora/Backend/Services/Server/ServerService.cs new file mode 100644 index 0000000..4863621 --- /dev/null +++ b/Aurora/Backend/Services/Server/ServerService.cs @@ -0,0 +1,28 @@ +using System; +using Grpc.Core; +using Aurora.Backend.Proto; + +namespace Aurora.Backend.Services.Server +{ + public class ServerService : BaseService + { + const int Port = 50051; + public ServerService() + { + Grpc.Core.Server server = new Grpc.Core.Server + { + Services = { + PartyService.BindService(new PartyServiceImpl()), + PlaybackService.BindService(new PlaybackServiceImpl()) }, + Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } + }; + server.Start(); + + Console.WriteLine("Aurora server listening on port " + Port); + Console.WriteLine("Press any key to stop the server..."); + Console.ReadKey(); + + server.ShutdownAsync().Wait(); + } + } +} \ No newline at end of file From b0307cf7b3dac4f619873a0c9fae82012f138921 Mon Sep 17 00:00:00 2001 From: watsonb8 Date: Mon, 3 Jun 2019 10:57:05 -0400 Subject: [PATCH 2/8] Beginning stages for party executors --- .../Client/Party/ClientPartyExecutor.cs | 73 ++++++++++++++++++ Aurora/Backend/Executors/BaseExecutor.cs | 38 +++++++++ Aurora/Backend/Executors/BasePartyExecutor.cs | 58 ++++++++++++++ Aurora/Backend/Models/PartyMember.cs | 16 ++++ .../Backend/Server/Party/HostPartyExecutor.cs | 77 +++++++++++++++++++ .../Backend/Server/Party/PartyServiceImpl.cs | 50 ++++++++++++ .../Playback}/PlaybackServiceImpl.cs | 2 +- .../Services/Server/PartyServiceImpl.cs | 10 --- .../Backend/Services/Server/ServerService.cs | 28 ------- Aurora/Backend/Services/ServerService.cs | 57 ++++++++++++++ 10 files changed, 370 insertions(+), 39 deletions(-) create mode 100644 Aurora/Backend/Client/Party/ClientPartyExecutor.cs create mode 100644 Aurora/Backend/Executors/BaseExecutor.cs create mode 100644 Aurora/Backend/Executors/BasePartyExecutor.cs create mode 100644 Aurora/Backend/Models/PartyMember.cs create mode 100644 Aurora/Backend/Server/Party/HostPartyExecutor.cs create mode 100644 Aurora/Backend/Server/Party/PartyServiceImpl.cs rename Aurora/Backend/{Services/Server => Server/Playback}/PlaybackServiceImpl.cs (75%) delete mode 100644 Aurora/Backend/Services/Server/PartyServiceImpl.cs delete mode 100644 Aurora/Backend/Services/Server/ServerService.cs create mode 100644 Aurora/Backend/Services/ServerService.cs diff --git a/Aurora/Backend/Client/Party/ClientPartyExecutor.cs b/Aurora/Backend/Client/Party/ClientPartyExecutor.cs new file mode 100644 index 0000000..f7c2800 --- /dev/null +++ b/Aurora/Backend/Client/Party/ClientPartyExecutor.cs @@ -0,0 +1,73 @@ +using System; +using Aurora.Backend.Executors; + +namespace Aurora.Backend.Client.Party +{ + public class ClientPartyExecutor : BasePartyExecutor + { + public ClientPartyExecutor() + { + + } + + public override void AddToQueue() + { + throw new NotImplementedException(); + } + + public override void Close() + { + throw new NotImplementedException(); + } + + public override void GetMembers() + { + throw new NotImplementedException(); + } + + public override void GetQueue() + { + throw new NotImplementedException(); + } + + public override void Initialize() + { + throw new NotImplementedException(); + } + + public override void Next() + { + throw new NotImplementedException(); + } + + public override void Pause() + { + throw new NotImplementedException(); + } + + public override void Play() + { + throw new NotImplementedException(); + } + + public override void Previous() + { + throw new NotImplementedException(); + } + + public override void RemoveFromQueue() + { + throw new NotImplementedException(); + } + + public override void Run() + { + throw new NotImplementedException(); + } + + public override void Stop() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Aurora/Backend/Executors/BaseExecutor.cs b/Aurora/Backend/Executors/BaseExecutor.cs new file mode 100644 index 0000000..dd09168 --- /dev/null +++ b/Aurora/Backend/Executors/BaseExecutor.cs @@ -0,0 +1,38 @@ +using System; +using System.Reflection; +using System.Linq; + +namespace Aurora.Backend.Executors +{ + public abstract class BaseExecutor + { + public BaseExecutor() + { + } + + public static BaseExecutor CreateExecutor(ExecutorType executorType) where T : BaseExecutor + { + MethodInfo method = typeof(T).GetMethod("Create"); + if (method == null) + { + throw new InvalidOperationException("Executor must include a 'create' method."); + } + + return method.Invoke(null, new object[] { executorType }) as BaseExecutor; + + // var types = typeof(T).Assembly.GetTypes(); + + // foreach (Type type in types) + // { + // MethodInfo genericMethod = method.MakeGenericMethod(type); + // genericMethod.Invoke(null, null); // No target, no arguments + // } + } + } + + public enum ExecutorType + { + Server, + Client + } +} \ No newline at end of file diff --git a/Aurora/Backend/Executors/BasePartyExecutor.cs b/Aurora/Backend/Executors/BasePartyExecutor.cs new file mode 100644 index 0000000..0889194 --- /dev/null +++ b/Aurora/Backend/Executors/BasePartyExecutor.cs @@ -0,0 +1,58 @@ +using System; +using Aurora.Backend.Server.Party; +using Aurora.Backend.Client.Party; + +namespace Aurora.Backend.Executors +{ + public abstract class BasePartyExecutor : BaseExecutor + { + public BasePartyExecutor() + { + + } + + public static BasePartyExecutor Create(ExecutorType type) + { + BasePartyExecutor executor = null; + switch (type) + { + case ExecutorType.Client: + { + executor = new ClientPartyExecutor(); + break; + } + case ExecutorType.Server: + { + executor = new HostPartyExecutor(); + break; + } + } + + return executor; + } + + public abstract void Initialize(); + + public abstract void Run(); + + public abstract void Close(); + + public abstract void GetMembers(); + + public abstract void GetQueue(); + + public abstract void AddToQueue(); + + public abstract void RemoveFromQueue(); + + public abstract void Play(); + + public abstract void Pause(); + + public abstract void Stop(); + + public abstract void Next(); + + public abstract void Previous(); + } +} \ No newline at end of file diff --git a/Aurora/Backend/Models/PartyMember.cs b/Aurora/Backend/Models/PartyMember.cs new file mode 100644 index 0000000..7769b5d --- /dev/null +++ b/Aurora/Backend/Models/PartyMember.cs @@ -0,0 +1,16 @@ +using System; + +namespace Aurora.Backend.Models +{ + public class PartyMember + { + public PartyMember() + { + } + + public string Username { get; set; } + public string Id { get; set; } + public string IpAddress { get; set; } + public string Port { get; set; } + } +} \ No newline at end of file diff --git a/Aurora/Backend/Server/Party/HostPartyExecutor.cs b/Aurora/Backend/Server/Party/HostPartyExecutor.cs new file mode 100644 index 0000000..5fd6397 --- /dev/null +++ b/Aurora/Backend/Server/Party/HostPartyExecutor.cs @@ -0,0 +1,77 @@ +using System; +using System.Threading.Tasks; +using Aurora.Backend.Executors; +using Aurora.Backend.Services; +using Aurora.Backend.Proto; + +namespace Aurora.Backend.Server.Party +{ + public class HostPartyExecutor : BasePartyExecutor + { + PartyServiceImpl _partyServiceImpl; + public HostPartyExecutor() + { + _partyServiceImpl = new PartyServiceImpl(); + } + + public override void Initialize() + { + ServerService.Instance.RegisterService(PartyService.BindService(_partyServiceImpl)); + } + + 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 Next() + { + throw new NotImplementedException(); + } + + public override void Pause() + { + throw new NotImplementedException(); + } + + public override void Play() + { + throw new NotImplementedException(); + } + + public override void Previous() + { + throw new NotImplementedException(); + } + + public override void RemoveFromQueue() + { + throw new NotImplementedException(); + } + + public override void Run() + { + throw new NotImplementedException(); + } + + public override void Stop() + { + throw new NotImplementedException(); + } + } +} \ No newline at end of file diff --git a/Aurora/Backend/Server/Party/PartyServiceImpl.cs b/Aurora/Backend/Server/Party/PartyServiceImpl.cs new file mode 100644 index 0000000..e118751 --- /dev/null +++ b/Aurora/Backend/Server/Party/PartyServiceImpl.cs @@ -0,0 +1,50 @@ +using System; +using System.Threading.Tasks; +using System.Collections.Generic; +using Aurora.Backend.Proto; +using Aurora.Backend.Models; + +namespace Aurora.Backend.Server.Party +{ + class PartyServiceImpl : PartyService.PartyServiceBase + { + /// + /// Dictionary of party members. Key -> ClientId + /// + private Dictionary _partyMembers; + + public PartyServiceImpl() + { + _partyMembers = new Dictionary(); + } + + public Dictionary PartyMembers + { + get + { + return _partyMembers; + } + } + + public override Task JoinParty(JoinPartyRequest request, Grpc.Core.ServerCallContext context) + { + _partyMembers.Add(request.ClientId, new PartyMember() + { + Username = request.UserName, + Id = request.ClientId, + IpAddress = request.IpAddress, + Port = request.Port, + }); + + JoinPartyResponse response = new JoinPartyResponse() { Status = PartyJoinedStatusEnum.Connected }; + return Task.FromResult(response); + } + + public override Task LeaveParty(LeavePartyRequest request, Grpc.Core.ServerCallContext context) + { + _partyMembers.Remove(request.ClientId); + LeavePartyResponse response = new LeavePartyResponse() { Status = PartyJoinedStatusEnum.Disconnected }; + return Task.FromResult(response); + } + } +} \ No newline at end of file diff --git a/Aurora/Backend/Services/Server/PlaybackServiceImpl.cs b/Aurora/Backend/Server/Playback/PlaybackServiceImpl.cs similarity index 75% rename from Aurora/Backend/Services/Server/PlaybackServiceImpl.cs rename to Aurora/Backend/Server/Playback/PlaybackServiceImpl.cs index 33ba9f1..443c8f1 100644 --- a/Aurora/Backend/Services/Server/PlaybackServiceImpl.cs +++ b/Aurora/Backend/Server/Playback/PlaybackServiceImpl.cs @@ -1,7 +1,7 @@ using System; using Aurora.Backend.Proto; -namespace Aurora.Backend.Services.Server +namespace Aurora.Backend.Server { class PlaybackServiceImpl : PlaybackService.PlaybackServiceBase { diff --git a/Aurora/Backend/Services/Server/PartyServiceImpl.cs b/Aurora/Backend/Services/Server/PartyServiceImpl.cs deleted file mode 100644 index 9367ad8..0000000 --- a/Aurora/Backend/Services/Server/PartyServiceImpl.cs +++ /dev/null @@ -1,10 +0,0 @@ -using System; -using Aurora.Backend.Proto; - -namespace Aurora.Backend.Services.Server -{ - class PartyServiceImpl : PartyService.PartyServiceBase - { - - } -} \ No newline at end of file diff --git a/Aurora/Backend/Services/Server/ServerService.cs b/Aurora/Backend/Services/Server/ServerService.cs deleted file mode 100644 index 4863621..0000000 --- a/Aurora/Backend/Services/Server/ServerService.cs +++ /dev/null @@ -1,28 +0,0 @@ -using System; -using Grpc.Core; -using Aurora.Backend.Proto; - -namespace Aurora.Backend.Services.Server -{ - public class ServerService : BaseService - { - const int Port = 50051; - public ServerService() - { - Grpc.Core.Server server = new Grpc.Core.Server - { - Services = { - PartyService.BindService(new PartyServiceImpl()), - PlaybackService.BindService(new PlaybackServiceImpl()) }, - Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } - }; - server.Start(); - - Console.WriteLine("Aurora server listening on port " + Port); - Console.WriteLine("Press any key to stop the server..."); - Console.ReadKey(); - - server.ShutdownAsync().Wait(); - } - } -} \ No newline at end of file diff --git a/Aurora/Backend/Services/ServerService.cs b/Aurora/Backend/Services/ServerService.cs new file mode 100644 index 0000000..8c88c1c --- /dev/null +++ b/Aurora/Backend/Services/ServerService.cs @@ -0,0 +1,57 @@ +using System; +using System.Threading.Tasks; +using Grpc.Core; +using Aurora.Backend.Proto; + +namespace Aurora.Backend.Services +{ + public class ServerService : BaseService + { + private const int Port = 50051; + private Grpc.Core.Server _server; + + /// + /// Constructor. Registers GRPC service implementations. + /// + public ServerService() + { + _server = new Grpc.Core.Server + { + Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } + }; + + Start(); + } + + /// + /// Start Server + /// + public void Start() + { + _server.Start(); + } + + /// + /// Shutdown server async. + /// + /// Task + public async Task Stop() + { + await _server.ShutdownAsync(); + } + + public async Task Reset() + { + await Stop(); + _server = new Grpc.Core.Server + { + Ports = { new ServerPort("localhost", Port, ServerCredentials.Insecure) } + }; + } + + public void RegisterService(ServerServiceDefinition definition) + { + _server.Services.Add(definition); + } + } +} \ No newline at end of file From 0cb05467411052f3f03d86051d670d9d2e05fbaa Mon Sep 17 00:00:00 2001 From: watsonb8 Date: Tue, 25 Jun 2019 21:17:52 -0400 Subject: [PATCH 3/8] Progress --- .../Client/Party/ClientPartyExecutor.cs | 25 ---- Aurora/Backend/Executors/BaseExecutor.cs | 10 +- Aurora/Backend/Executors/BasePartyExecutor.cs | 11 +- .../Backend/Server/Party/HostPartyExecutor.cs | 25 ---- .../Components/HostSelector/HostSelector.xaml | 46 ++++-- .../HostSelector/HostSelector.xaml.cs | 138 ++++++++++++++++++ Aurora/Frontend/Components/Queue/Queue.xaml | 2 +- Aurora/Frontend/Views/Party/PartyView.xaml | 27 ++-- Aurora/Frontend/Views/Party/PartyView.xaml.cs | 1 - Aurora/Frontend/Views/Party/PartyViewModel.cs | 87 +++++++++++ 10 files changed, 283 insertions(+), 89 deletions(-) diff --git a/Aurora/Backend/Client/Party/ClientPartyExecutor.cs b/Aurora/Backend/Client/Party/ClientPartyExecutor.cs index f7c2800..f7c0669 100644 --- a/Aurora/Backend/Client/Party/ClientPartyExecutor.cs +++ b/Aurora/Backend/Client/Party/ClientPartyExecutor.cs @@ -35,26 +35,6 @@ namespace Aurora.Backend.Client.Party throw new NotImplementedException(); } - public override void Next() - { - throw new NotImplementedException(); - } - - public override void Pause() - { - throw new NotImplementedException(); - } - - public override void Play() - { - throw new NotImplementedException(); - } - - public override void Previous() - { - throw new NotImplementedException(); - } - public override void RemoveFromQueue() { throw new NotImplementedException(); @@ -64,10 +44,5 @@ namespace Aurora.Backend.Client.Party { throw new NotImplementedException(); } - - public override void Stop() - { - throw new NotImplementedException(); - } } } \ No newline at end of file diff --git a/Aurora/Backend/Executors/BaseExecutor.cs b/Aurora/Backend/Executors/BaseExecutor.cs index dd09168..30ede3c 100644 --- a/Aurora/Backend/Executors/BaseExecutor.cs +++ b/Aurora/Backend/Executors/BaseExecutor.cs @@ -10,6 +10,8 @@ namespace Aurora.Backend.Executors { } + public ExecutorType ExecutorType { get; protected set; } + public static BaseExecutor CreateExecutor(ExecutorType executorType) where T : BaseExecutor { MethodInfo method = typeof(T).GetMethod("Create"); @@ -19,14 +21,6 @@ namespace Aurora.Backend.Executors } return method.Invoke(null, new object[] { executorType }) as BaseExecutor; - - // var types = typeof(T).Assembly.GetTypes(); - - // foreach (Type type in types) - // { - // MethodInfo genericMethod = method.MakeGenericMethod(type); - // genericMethod.Invoke(null, null); // No target, no arguments - // } } } diff --git a/Aurora/Backend/Executors/BasePartyExecutor.cs b/Aurora/Backend/Executors/BasePartyExecutor.cs index 0889194..1c26b16 100644 --- a/Aurora/Backend/Executors/BasePartyExecutor.cs +++ b/Aurora/Backend/Executors/BasePartyExecutor.cs @@ -19,11 +19,13 @@ namespace Aurora.Backend.Executors case ExecutorType.Client: { executor = new ClientPartyExecutor(); + executor.ExecutorType = type; break; } case ExecutorType.Server: { executor = new HostPartyExecutor(); + executor.ExecutorType = type; break; } } @@ -45,14 +47,5 @@ namespace Aurora.Backend.Executors public abstract void RemoveFromQueue(); - public abstract void Play(); - - public abstract void Pause(); - - public abstract void Stop(); - - public abstract void Next(); - - public abstract void Previous(); } } \ No newline at end of file diff --git a/Aurora/Backend/Server/Party/HostPartyExecutor.cs b/Aurora/Backend/Server/Party/HostPartyExecutor.cs index 5fd6397..4d0eefc 100644 --- a/Aurora/Backend/Server/Party/HostPartyExecutor.cs +++ b/Aurora/Backend/Server/Party/HostPartyExecutor.cs @@ -39,26 +39,6 @@ namespace Aurora.Backend.Server.Party throw new NotImplementedException(); } - public override void Next() - { - throw new NotImplementedException(); - } - - public override void Pause() - { - throw new NotImplementedException(); - } - - public override void Play() - { - throw new NotImplementedException(); - } - - public override void Previous() - { - throw new NotImplementedException(); - } - public override void RemoveFromQueue() { throw new NotImplementedException(); @@ -68,10 +48,5 @@ namespace Aurora.Backend.Server.Party { throw new NotImplementedException(); } - - public override void Stop() - { - throw new NotImplementedException(); - } } } \ No newline at end of file diff --git a/Aurora/Frontend/Components/HostSelector/HostSelector.xaml b/Aurora/Frontend/Components/HostSelector/HostSelector.xaml index 6b0144d..d3095ba 100644 --- a/Aurora/Frontend/Components/HostSelector/HostSelector.xaml +++ b/Aurora/Frontend/Components/HostSelector/HostSelector.xaml @@ -1,13 +1,39 @@ - + - -