Incomplete RESTful API for IRC
You can not select more than 25 topics Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.

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. }