X-Git-Url: https://git.pterodactylus.net/?a=blobdiff_plain;f=src%2Fmain%2Fjava%2Fnet%2Fpterodactylus%2Firc%2FConnection.java;h=f5b29b4d32408726a9115ec63d99ff14c2e0dad5;hb=029ac191fbe3b39b323a76790ba1605a380e02e1;hp=6d21b327980dc4fc7c0246a4476f6649771a5648;hpb=ced5fb2ae01de5fa6f4b8c221d37a5a76ad5b81a;p=xudocci.git diff --git a/src/main/java/net/pterodactylus/irc/Connection.java b/src/main/java/net/pterodactylus/irc/Connection.java index 6d21b32..f5b29b4 100644 --- a/src/main/java/net/pterodactylus/irc/Connection.java +++ b/src/main/java/net/pterodactylus/irc/Connection.java @@ -48,8 +48,10 @@ import net.pterodactylus.irc.event.ChannelTopic; import net.pterodactylus.irc.event.ClientQuit; import net.pterodactylus.irc.event.ConnectionEstablished; import net.pterodactylus.irc.event.ConnectionFailed; +import net.pterodactylus.irc.event.DccAcceptReceived; import net.pterodactylus.irc.event.DccSendReceived; import net.pterodactylus.irc.event.MotdReceived; +import net.pterodactylus.irc.event.NicknameChanged; import net.pterodactylus.irc.event.NicknameInUseReceived; import net.pterodactylus.irc.event.NoNicknameGivenReceived; import net.pterodactylus.irc.event.PrivateMessageReceived; @@ -242,6 +244,24 @@ public class Connection extends AbstractExecutionThreadService implements Servic connectionHandler.sendCommand("PRIVMSG", recipient, message); } + /** + * Sends a DCC RESUME request to the given recipient. + * + * @param recipient + * The recipient of the request + * @param filename + * The name of the file to resume + * @param port + * The port number from the original DCC SEND request + * @param position + * The position at which to resume the transfer + * @throws IOException + * if an I/O error occurs + */ + public void sendDccResume(String recipient, String filename, int port, long position) throws IOException { + connectionHandler.sendCommand("PRIVMSG", recipient, String.format("\u0001DCC RESUME %s %d %d\u0001", filename, port, position)); + } + // // ABSTRACTEXECUTIONTHREADSERVICE METHODS // @@ -310,6 +330,14 @@ public class Connection extends AbstractExecutionThreadService implements Servic } else { logger.warning(String.format("Received malformed DCC SEND: “%s”", message)); } + } else if (messageWords[1].equalsIgnoreCase("ACCEPT")) { + Optional port = Optional.fromNullable(Ints.tryParse(messageWords[3])); + long position = Optional.fromNullable(Longs.tryParse(messageWords[4])).or(-1L); + if (port.isPresent()) { + eventBus.post(new DccAcceptReceived(this, reply.source().get(), messageWords[2], port.get(), position)); + } else { + logger.warning(String.format("Received malformed DCC ACCEPT: “%s”", message)); + } } } } else if (!channelTypes.contains(recipient.charAt(0))) { @@ -372,6 +400,10 @@ public class Connection extends AbstractExecutionThreadService implements Servic eventBus.post(new NicknameInUseReceived(this, reply)); } + /* client stuff. */ + } else if (command.equalsIgnoreCase("NICK")) { + eventBus.post(new NicknameChanged(this, reply.source().get(), parameters.get(0))); + /* channel stuff. */ } else if (command.equalsIgnoreCase("JOIN")) { eventBus.post(new ChannelJoined(this, parameters.get(0), reply.source().get()));