public static AbstractServer GetServer(ServerType serverType, string port) { AbstractServer server = null; AbstractHandlerFactory handlerFactory = null; AbstractCommandHandler handler = null; switch (serverType) { case ServerType.TCPServer: server = new TCPServer(port); handlerFactory = new TCPHandlerFactory(); break; case ServerType.FileServer: port = GetFilserverPort(port); server = new FileServer(300, port); handlerFactory = new FileHandlerFactory(); break; case ServerType.SyncFileServer: port = GetFilserverPort(port); server = new SyncFileServer(300, port); handlerFactory = new FileHandlerFactory(); break; } server.commandHandler = handlerFactory.GetKeyBoardRequestHandler(); handler = server.commandHandler.SetNextHandler(handlerFactory.GetMouseRequestHandler()); handler = handler.SetNextHandler(handlerFactory.GetKeyLoggerRequestHandler()); handler = handler.SetNextHandler(handlerFactory.GetScreenRequestHandler()); handler.SetNextHandler(handlerFactory.GetDefaultRequestHandler()); return(server); }
static void Main(string[] args) { Parser.Default.ParseArguments <ConfigCommand, ServerListCommand>(args) .WithParsed((c) => Task.Run(async() => await AbstractCommandHandler.StartWork((ICommand)c, ContainerConfig.Configure()))); Console.Read(); }
public async Task ServerListCommandHandler_HandlesNotLocal() { ServerListCommand command = new ServerListCommand() { FetchLocal = false }; string serversPath = JsonConvert.DeserializeObject <StorageSettings>(new StreamReader("./StorageSettings.json").ReadToEnd()).ServerSavePath; if (File.Exists(serversPath)) { File.Delete(serversPath); } await AbstractCommandHandler.StartWork(command, ContainerConfig.Configure()); IEnumerable <Server> servers = null; using (var sr = new StreamReader(serversPath)) { servers = JsonConvert.DeserializeObject <IEnumerable <Server> >(sr.ReadToEnd()); } Assert.NotNull(servers); Assert.NotEmpty(servers); }
public async Task ConfigCommandHandler_HandlesDefault(string username, string password) { ConfigCommand command = new ConfigCommand() { Username = username, Password = password }; string credentialsPath = JsonConvert.DeserializeObject <StorageSettings>(new StreamReader("./StorageSettings.json").ReadToEnd()).CredentialsSavePath; if (File.Exists(credentialsPath)) { File.Delete(credentialsPath); } await AbstractCommandHandler.StartWork(command, ContainerConfig.Configure()); var credentials = JsonConvert.DeserializeObject <Credentials>(new StreamReader(credentialsPath).ReadToEnd()); Assert.Equal(command.Username, credentials.Username); Assert.Equal(command.Password, credentials.Password); }
/// <summary> /// Register all implementations of Command handlers. /// </summary> /// <param name="commandHandler">command handler.</param> public void AddAllHandlers(AbstractCommandHandler commandHandler) { if (commandHandler == null) { throw new ArgumentNullException(nameof(commandHandler)); } // Here we werify that we take all interfaces ICommandHandler<ICommand> var interfaces = commandHandler.GetType().GetInterfaces() .Where(i => i.GetGenericTypeDefinition() == typeof(ICommandHandler <>)); foreach (var t in interfaces) { var commandType = t.GenericTypeArguments.Single(); var constructedWrapper = typeof(CommandHandlerWrapper <>).MakeGenericType(commandType); var abstractHandler = (ICommandHandler <ICommand>)Activator.CreateInstance(constructedWrapper, commandHandler); funcs.Add(commandType, abstractHandler); } }