Minimal IRC stack set-up.

fix-message-formatting
Danny van Heumen 12 years ago
parent 4dab0a4d31
commit 91b93500cc

@ -2092,6 +2092,12 @@ javax.swing.event, javax.swing.border"/>
manifest="${src}/net/java/sip/communicator/impl/protocol/irc/irc.provider.manifest.mf"> manifest="${src}/net/java/sip/communicator/impl/protocol/irc/irc.provider.manifest.mf">
<zipfileset dir="${dest}/net/java/sip/communicator/impl/protocol/irc" <zipfileset dir="${dest}/net/java/sip/communicator/impl/protocol/irc"
prefix="net/java/sip/communicator/impl/protocol/irc"/> prefix="net/java/sip/communicator/impl/protocol/irc"/>
<zipfileset src="${lib.noinst}/irc-api-1.0.jar"
prefix="" />
<zipfileset src="${lib.noinst}/slf4j-api-1.7.5.jar"
prefix="" />
<zipfileset src="${lib.noinst}/slf4j-simple-1.7.5.jar"
prefix="" />
</jar> </jar>
</target> </target>

@ -8,6 +8,13 @@
import java.util.*; import java.util.*;
import com.ircclouds.irc.api.Callback;
import com.ircclouds.irc.api.IRCApi;
import com.ircclouds.irc.api.IRCApiImpl;
import com.ircclouds.irc.api.IServerParameters;
import com.ircclouds.irc.api.domain.IRCServer;
import com.ircclouds.irc.api.state.IIRCState;
import net.java.sip.communicator.service.protocol.*; import net.java.sip.communicator.service.protocol.*;
import net.java.sip.communicator.util.*; import net.java.sip.communicator.util.*;
@ -16,53 +23,118 @@
*/ */
public class IrcStack public class IrcStack
{ {
private static final Logger logger = Logger.getLogger(IrcStack.class); private static final Logger LOGGER = Logger.getLogger(IrcStack.class);
/** private final ProtocolProviderServiceIrcImpl provider;
* Timeout for server response.
*/ private final IRCApi irc = new IRCApiImpl(true);
private static final int TIMEOUT = 10000;
private final ServerParameters params;
public IrcStack(ProtocolProviderServiceIrcImpl parentProvider, String nick, String login, String version, String finger) private IIRCState connectionState;
public IrcStack(final ProtocolProviderServiceIrcImpl parentProvider, final String nick, final String login, final String version, final String finger)
{ {
//TODO Implement this. if (parentProvider == null)
{
throw new NullPointerException("parentProvider cannot be null");
}
this.provider = parentProvider;
this.params = new IrcStack.ServerParameters(nick, "", finger, null);
} }
public boolean isConnected() public boolean isConnected()
{ {
//TODO Implement this. return (this.connectionState != null && this.connectionState.isConnected());
return false;
} }
public void connect(String host, int port, String password, boolean autoNickChange) public void connect(String host, int port, String password, boolean autoNickChange)
{ {
//TODO Implement this. this.params.setServer(new IRCServer(host, port, password, false));
synchronized(this.irc)
{
// start connecting to the specified server ...
this.irc.connect(this.params, new Callback<IIRCState>()
{
@Override
public void onSuccess(IIRCState state)
{
synchronized(IrcStack.this.irc)
{
System.out.println("IRC connected successfully!");
IrcStack.this.connectionState = state;
IrcStack.this.irc.notifyAll();
}
}
@Override
public void onFailure(Exception e)
{
synchronized(IrcStack.this.irc)
{
System.out.println("IRC connection FAILED!");
e.printStackTrace();
IrcStack.this.connectionState = null;
IrcStack.this.irc.notifyAll();
}
}
});
// wait while the irc connection is being established ...
try
{
System.out.println("Waiting for a connection ...");
this.irc.wait();
}
catch (InterruptedException e)
{
// TODO Auto-generated catch block
e.printStackTrace();
}
//TODO do something on connection fail!
}
} }
public void disconnect() public void disconnect()
{ {
//TODO Implement this. if(this.connectionState != null)
{
this.irc.disconnect();
this.connectionState = null;
}
} }
public void dispose() public void dispose()
{ {
//TODO Implement this. disconnect();
} }
public String getNick() public String getNick()
{ {
//TODO Implement this. return (this.connectionState == null) ? this.params.getNickname() : this.connectionState.getNickname();
return "";
} }
public void setUserNickname(String nick) public void setUserNickname(String nick)
{ {
//TODO Implement this. if (this.connectionState == null)
{
this.params.setNickname(nick);
}
else
{
this.irc.changeNick(nick);
}
} }
public void setSubject(ChatRoomIrcImpl chatroom, String subject) public void setSubject(ChatRoomIrcImpl chatroom, String subject)
{ {
//TODO Implement this. if (this.connectionState == null)
throw new IllegalStateException("Please connect to an IRC server first.");
if (chatroom == null)
throw new IllegalArgumentException("Cannot have a null chatroom");
this.irc.changeTopic(chatroom.getName(), subject == null ? "" : subject);
} }
public boolean isJoined(ChatRoomIrcImpl chatroom) public boolean isJoined(ChatRoomIrcImpl chatroom)
@ -79,12 +151,18 @@ public List<String> getServerChatRoomList()
public void join(ChatRoomIrcImpl chatroom) public void join(ChatRoomIrcImpl chatroom)
{ {
//TODO Implement this. join(chatroom, "".getBytes());
} }
public void join(ChatRoomIrcImpl chatroom, byte[] password) public void join(ChatRoomIrcImpl chatroom, byte[] password)
{ {
//TODO Implement this. //TODO password as String
if (chatroom == null)
throw new IllegalArgumentException("chatroom cannot be null");
if (password == null)
throw new IllegalArgumentException("password cannot be null");
//TODO add chatroom listener
this.irc.joinChannel(chatroom.getName(), password.toString());
} }
public void leave(ChatRoomIrcImpl chatroom) public void leave(ChatRoomIrcImpl chatroom)
@ -116,4 +194,77 @@ public void message(ChatRoomIrcImpl chatroom, String message)
{ {
//TODO Implement this. //TODO Implement this.
} }
private static class ServerParameters implements IServerParameters {
private String nick;
private List<String> alternativeNicks = new ArrayList<String>();
private String real;
private String ident;
private IRCServer server;
private ServerParameters(String nickName, String realName, String ident, IRCServer server)
{
this.nick = nickName;
this.alternativeNicks.add(nickName+"_");
this.real = realName;
this.ident = ident;
this.server = server;
}
@Override
public String getNickname()
{
return this.nick;
}
public void setNickname(String nick)
{
this.nick = nick;
}
@Override
public List<String> getAlternativeNicknames()
{
return this.alternativeNicks;
}
public void setAlternativeNicknames(List<String> names)
{
this.alternativeNicks = names;
}
@Override
public String getIdent()
{
return this.ident;
}
public void setIdent(String ident)
{
this.ident = ident;
}
@Override
public String getRealname()
{
return this.real;
}
public void setRealname(String realname)
{
this.real = realname;
}
@Override
public IRCServer getServer()
{
return this.server;
}
public void setServer(IRCServer server)
{
this.server = server;
}
}
} }

@ -6,7 +6,8 @@ Bundle-Version: 0.0.1
Bundle-SymbolicName: net.java.sip.communicator.protocol.irc Bundle-SymbolicName: net.java.sip.communicator.protocol.irc
Import-Package: org.osgi.framework, Import-Package: org.osgi.framework,
org.jitsi.service.configuration, org.jitsi.service.configuration,
org.jitsi.service.resources, net.java.sip.communicator.service.resources, org.jitsi.service.resources,
net.java.sip.communicator.service.resources,
net.java.sip.communicator.util, net.java.sip.communicator.util,
net.java.sip.communicator.service.protocol, net.java.sip.communicator.service.protocol,
net.java.sip.communicator.service.protocol.event net.java.sip.communicator.service.protocol.event

Loading…
Cancel
Save