Beginning stages for party executors

This commit is contained in:
watsonb8
2019-06-03 10:57:05 -04:00
parent 6503d2c410
commit b0307cf7b3
10 changed files with 370 additions and 39 deletions

View File

@ -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<T>(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
}
}

View File

@ -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();
}
}