Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- package com.ircclouds.irc.cloudserver.comms.rpc;
- import java.io.IOException;
- import java.util.ArrayList;
- import java.util.Arrays;
- import java.util.HashMap;
- import java.util.List;
- import java.util.Map;
- import com.ircclouds.irc.cloudserver.util.CookieUtils;
- import com.ircclouds.irc.domain.Channel;
- import com.ircclouds.irc.domain.User;
- import com.ircclouds.irc.robot.Launcher;
- import com.ircclouds.irc.robot.commands.JoinChanCmd;
- import com.ircclouds.irc.robot.comms.BotSession;
- import com.ircclouds.irc.robot.config.BotConfig;
- import com.ircclouds.irc.robot.config.ChannelConfig;
- import com.ircclouds.irc.robot.config.impl.BotConfigImpl;
- import com.ircclouds.irc.robot.config.impl.ServerConfigImpl;
- import com.ircclouds.irc.robot.controllers.JoinChanCallback;
- import com.ircclouds.irc.robot.utils.StringUtils;
- import com.ircclouds.web.ui.client.comms.rpc.IRCService;
- import com.ircclouds.web.ui.client.model.SimpleChannel;
- import com.ircclouds.web.ui.client.model.SimpleUser;
- /**
- *
- * @author
- *
- */
- public class IRCServiceImpl extends AbstractICRemoteServiceServlet implements IRCService
- {
- private static Map<String, List<BotSession>> sessionMap;
- static
- {
- if (sessionMap == null)
- sessionMap = new HashMap<String, List<BotSession>>();
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public String connectToServer(final String aServer, final int aPort)
- {
- final Launcher _launcher = new Launcher();
- try
- {
- final BotSession _botSession = _launcher.launch(newBotConfig(aServer, aPort));
- final String _user = CookieUtils.getCookieValue(getThreadLocalRequest().getCookies(), "username");
- if (!StringUtils.isEmpty(_user))
- {
- if (!sessionMap.containsKey(_user))
- {
- sessionMap.put(_user, new ArrayList<BotSession>());
- }
- sessionMap.get(_user).add(_botSession);
- }
- _botSession.addListener(new IRCRelay(_user, _botSession));
- }
- catch (IOException aExc)
- {
- // TODO
- }
- return aServer;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public String disconnectFromServer(String arg0)
- {
- return "";
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public SimpleChannel joinChannel(final String aNetwork, final String aChannel)
- {
- final SimpleChannel _simpleChan = new SimpleChannel();
- for (final BotSession _session : sessionMap.get(CookieUtils.getCookieValue(getThreadLocalRequest().getCookies(), "username")))
- {
- if (aNetwork.equals(_session.getBot().getServer().getHostname()))
- {
- _session.execute(new JoinChanCmd(aChannel), new JoinChanCallback(aChannel)
- {
- @Override
- public void gotSuccess(Channel aChanInfo)
- {
- synchronized(_simpleChan){
- _session.getBot().addChannel(aChanInfo); // TODO: make this automatic in 'robot' prjkt.
- _simpleChan.setChannelName(aChanInfo.getName());
- _simpleChan.setServerName(aNetwork);
- _simpleChan.setTopic(aChanInfo.getTopic());
- List<SimpleUser> nicknames = new ArrayList<SimpleUser>();
- for (User u : aChanInfo.getUsers().keySet())
- {
- nicknames.add(new SimpleUser(u.getNick()));
- }
- _simpleChan.setNicknames(nicknames);
- _simpleChan.notify();
- }
- }
- @Override
- public void gotFailure(String aErrorMsg)
- {
- }
- });
- break;
- }
- }
- synchronized (_simpleChan){
- try
- {
- _simpleChan.wait();
- }
- catch (InterruptedException e)
- {
- e.printStackTrace();
- }
- }
- return _simpleChan;
- }
- /**
- * {@inheritDoc}
- */
- @Override
- public String leaveChannel(String arg0)
- {
- return "";
- }
- private BotConfig newBotConfig(final String aServer, final int aPort)
- {
- return new BotConfigImpl("CloudUser", // nick
- Arrays.asList("migz", "yoann", "blabla"), // alt nicks
- "c", // ident
- "Cloud User 1", // real name
- new ServerConfigImpl(aServer, aPort), // server config
- new ArrayList<ChannelConfig>() {}); // channel config
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement