Advertisement
Guest User

Untitled

a guest
Jun 26th, 2017
66
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.95 KB | None | 0 0
  1. package com.ircclouds.irc.cloudserver.comms.rpc;
  2.  
  3. import java.io.IOException;
  4. import java.util.ArrayList;
  5. import java.util.Arrays;
  6. import java.util.HashMap;
  7. import java.util.List;
  8. import java.util.Map;
  9.  
  10. import com.ircclouds.irc.cloudserver.util.CookieUtils;
  11. import com.ircclouds.irc.domain.Channel;
  12. import com.ircclouds.irc.domain.User;
  13. import com.ircclouds.irc.robot.Launcher;
  14. import com.ircclouds.irc.robot.commands.JoinChanCmd;
  15. import com.ircclouds.irc.robot.comms.BotSession;
  16. import com.ircclouds.irc.robot.config.BotConfig;
  17. import com.ircclouds.irc.robot.config.ChannelConfig;
  18. import com.ircclouds.irc.robot.config.impl.BotConfigImpl;
  19. import com.ircclouds.irc.robot.config.impl.ServerConfigImpl;
  20. import com.ircclouds.irc.robot.controllers.JoinChanCallback;
  21. import com.ircclouds.irc.robot.utils.StringUtils;
  22. import com.ircclouds.web.ui.client.comms.rpc.IRCService;
  23. import com.ircclouds.web.ui.client.model.SimpleChannel;
  24. import com.ircclouds.web.ui.client.model.SimpleUser;
  25.  
  26. /**
  27. *
  28. * @author
  29. *
  30. */
  31. public class IRCServiceImpl extends AbstractICRemoteServiceServlet implements IRCService
  32. {
  33. private static Map<String, List<BotSession>> sessionMap;
  34.  
  35. static
  36. {
  37. if (sessionMap == null)
  38. sessionMap = new HashMap<String, List<BotSession>>();
  39. }
  40.  
  41. /**
  42. * {@inheritDoc}
  43. */
  44. @Override
  45. public String connectToServer(final String aServer, final int aPort)
  46. {
  47. final Launcher _launcher = new Launcher();
  48. try
  49. {
  50. final BotSession _botSession = _launcher.launch(newBotConfig(aServer, aPort));
  51. final String _user = CookieUtils.getCookieValue(getThreadLocalRequest().getCookies(), "username");
  52.  
  53. if (!StringUtils.isEmpty(_user))
  54. {
  55. if (!sessionMap.containsKey(_user))
  56. {
  57. sessionMap.put(_user, new ArrayList<BotSession>());
  58. }
  59.  
  60. sessionMap.get(_user).add(_botSession);
  61. }
  62.  
  63. _botSession.addListener(new IRCRelay(_user, _botSession));
  64. }
  65. catch (IOException aExc)
  66. {
  67. // TODO
  68. }
  69.  
  70. return aServer;
  71. }
  72.  
  73. /**
  74. * {@inheritDoc}
  75. */
  76. @Override
  77. public String disconnectFromServer(String arg0)
  78. {
  79. return "";
  80. }
  81.  
  82. /**
  83. * {@inheritDoc}
  84. */
  85. @Override
  86. public SimpleChannel joinChannel(final String aNetwork, final String aChannel)
  87. {
  88. final SimpleChannel _simpleChan = new SimpleChannel();
  89.  
  90. for (final BotSession _session : sessionMap.get(CookieUtils.getCookieValue(getThreadLocalRequest().getCookies(), "username")))
  91. {
  92. if (aNetwork.equals(_session.getBot().getServer().getHostname()))
  93. {
  94. _session.execute(new JoinChanCmd(aChannel), new JoinChanCallback(aChannel)
  95. {
  96. @Override
  97. public void gotSuccess(Channel aChanInfo)
  98. {
  99. synchronized(_simpleChan){
  100. _session.getBot().addChannel(aChanInfo); // TODO: make this automatic in 'robot' prjkt.
  101.  
  102. _simpleChan.setChannelName(aChanInfo.getName());
  103. _simpleChan.setServerName(aNetwork);
  104. _simpleChan.setTopic(aChanInfo.getTopic());
  105.  
  106. List<SimpleUser> nicknames = new ArrayList<SimpleUser>();
  107. for (User u : aChanInfo.getUsers().keySet())
  108. {
  109. nicknames.add(new SimpleUser(u.getNick()));
  110. }
  111.  
  112. _simpleChan.setNicknames(nicknames);
  113.  
  114.  
  115. _simpleChan.notify();
  116. }
  117. }
  118.  
  119. @Override
  120. public void gotFailure(String aErrorMsg)
  121. {
  122. }
  123. });
  124.  
  125. break;
  126. }
  127.  
  128. }
  129.  
  130. synchronized (_simpleChan){
  131. try
  132. {
  133. _simpleChan.wait();
  134. }
  135. catch (InterruptedException e)
  136. {
  137. e.printStackTrace();
  138. }
  139. }
  140.  
  141. return _simpleChan;
  142. }
  143.  
  144. /**
  145. * {@inheritDoc}
  146. */
  147. @Override
  148. public String leaveChannel(String arg0)
  149. {
  150. return "";
  151. }
  152.  
  153. private BotConfig newBotConfig(final String aServer, final int aPort)
  154. {
  155. return new BotConfigImpl("CloudUser", // nick
  156. Arrays.asList("migz", "yoann", "blabla"), // alt nicks
  157. "c", // ident
  158. "Cloud User 1", // real name
  159. new ServerConfigImpl(aServer, aPort), // server config
  160. new ArrayList<ChannelConfig>() {}); // channel config
  161. }
  162. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement