Incomplete RESTful API for IRC
Vous ne pouvez pas sélectionner plus de 25 sujets Les noms de sujets doivent commencer par une lettre ou un nombre, peuvent contenir des tirets ('-') et peuvent comporter jusqu'à 35 caractères.

Server.java 1.9KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970
  1. package name.smith.chris.restirc.model;
  2. import com.dmdirc.parser.common.CallbackManager;
  3. import com.dmdirc.parser.interfaces.Parser;
  4. import com.dmdirc.parser.interfaces.callbacks.CallbackInterface;
  5. import com.dmdirc.parser.interfaces.callbacks.DebugInfoListener;
  6. import com.dmdirc.parser.interfaces.callbacks.ServerReadyListener;
  7. import com.dmdirc.parser.irc.IRCParser;
  8. import java.net.URI;
  9. import java.util.Date;
  10. import java.util.List;
  11. import java.util.concurrent.CopyOnWriteArrayList;
  12. import lombok.extern.slf4j.Slf4j;
  13. /**
  14. * Represents a server.
  15. */
  16. @Slf4j
  17. public class Server {
  18. private Parser parser;
  19. private final List<URI> addresses = new CopyOnWriteArrayList<URI>();
  20. private final List<String> channels = new CopyOnWriteArrayList<String>();
  21. private int nextAddress = 0;
  22. public void connect() {
  23. log.info("Connecting...");
  24. this.parser = new IRCParser(addresses.get(nextAddress));
  25. final CallbackManager callback = this.parser.getCallbackManager();
  26. final Listener listener = new Listener();
  27. for (Class<?> clazz : Listener.class.getInterfaces()) {
  28. callback.addCallback((Class<CallbackInterface>) clazz, listener);
  29. }
  30. this.parser.connect();
  31. }
  32. public void addAddress(final URI address) {
  33. log.info("Adding address: {}", address);
  34. this.addresses.add(address);
  35. }
  36. public void addChannel(final String channel) {
  37. log.info("Adding channel: {}", channel);
  38. this.channels.add(channel);
  39. }
  40. private class Listener implements ServerReadyListener, DebugInfoListener {
  41. @Override
  42. public void onServerReady(Parser parser, Date date) {
  43. for (String channel : channels) {
  44. parser.joinChannel(channel);
  45. }
  46. }
  47. @Override
  48. public void onDebugInfo(Parser parser, Date date, int i, String string) {
  49. log.debug(string);
  50. }
  51. }
  52. }