import static com.lexicalscope.jewel.cli.CliFactory.parseArguments;
import java.io.File;
-import java.io.InputStreamReader;
-import java.io.OutputStreamWriter;
import java.util.Collection;
import java.util.HashSet;
import java.util.concurrent.CopyOnWriteArraySet;
import java.util.concurrent.Executors;
-import java.util.logging.ConsoleHandler;
-import java.util.logging.Formatter;
-import java.util.logging.Level;
-import java.util.logging.LogRecord;
-import java.util.logging.Logger;
-import net.pterodactylus.irc.Connection;
+import net.pterodactylus.irc.ConnectionFactory;
+import net.pterodactylus.irc.DefaultConnectionFactory;
import net.pterodactylus.xdcc.core.Core;
import net.pterodactylus.xdcc.data.Channel;
import net.pterodactylus.xdcc.data.Download;
public static void main(String... arguments) throws Exception {
- ConsoleHandler consoleHandler = new ConsoleHandler();
- consoleHandler.setFormatter(new Formatter() {
-
- @Override
- public String format(LogRecord logRecord) {
- return String.format("%1$tF %1$tT %2$s %3$s\n", logRecord.getMillis(), logRecord.getLoggerName(), logRecord.getMessage());
- }
- });
- consoleHandler.setLevel(Level.ALL);
- Logger.getLogger("").removeHandler(Logger.getLogger("").getHandlers()[0]);
- Logger.getLogger("").addHandler(consoleHandler);
- Logger.getLogger("").setLevel(Level.ALL);
- Logger.getLogger(Connection.class.getName()).setLevel(Level.INFO);
- Logger.getLogger(Core.class.getName()).setLevel(Level.INFO);
-
Parameters parameters = parseArguments(Parameters.class, arguments);
EventBus eventBus = new AsyncEventBus(Executors.newSingleThreadExecutor());
Configuration configuration = new ObjectMapper().readValue(new File(parameters.getConfiguration()), Configuration.class);
+ ConnectionFactory connectionFactory = new DefaultConnectionFactory(eventBus);
- Core core = new Core(eventBus, configuration.getTemporaryDirectory(), configuration.getFinalDirectory());
+ Core core = new Core(eventBus, connectionFactory, configuration.getTemporaryDirectory(), configuration.getFinalDirectory());
eventBus.register(core);
for (Configuration.Network network : configuration.getNetworks()) {
Collection<Download> failedDownloads = new CopyOnWriteArraySet<>();
- CommandReader commandReader = new CommandReader(core, new InputStreamReader(System.in, "UTF-8"), new OutputStreamWriter(System.out, "UTF-8"), failedDownloads);
- commandReader.start();
- eventBus.register(commandReader);
-
NetworkAdapter networkAcceptor = new NetworkAdapter(eventBus, (reader, writer) -> new CommandReader(core, reader, writer, failedDownloads), configuration.getTelnetPort());
networkAcceptor.start();