Skip to main content
summaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
authorrsuen2009-04-30 23:26:57 +0000
committerrsuen2009-04-30 23:26:57 +0000
commit6bdc90ad18c023a36d6cfa43170758258954fa2c (patch)
tree6d3a1f7c7b34f817104a5b6ef61ac4e1ba3cd818 /providers/bundles/org.eclipse.ecf.provider.irc
parentc8c0547b7594863502a5ebb217e9ef854f563b1b (diff)
downloadorg.eclipse.ecf-6bdc90ad18c023a36d6cfa43170758258954fa2c.tar.gz
org.eclipse.ecf-6bdc90ad18c023a36d6cfa43170758258954fa2c.tar.xz
org.eclipse.ecf-6bdc90ad18c023a36d6cfa43170758258954fa2c.zip
Instantiate IRCIDs as necessary for peer identification.
Diffstat (limited to 'providers/bundles/org.eclipse.ecf.provider.irc')
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareChannel.java28
-rw-r--r--providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareContainer.java4
2 files changed, 23 insertions, 9 deletions
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareChannel.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareChannel.java
index 8147acd73..6d7ee469b 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareChannel.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareChannel.java
@@ -13,24 +13,33 @@ package org.eclipse.ecf.internal.provider.irc.datashare;
import org.eclipse.core.runtime.Assert;
import org.eclipse.core.runtime.IStatus;
import org.eclipse.ecf.core.identity.ID;
+import org.eclipse.ecf.core.identity.Namespace;
import org.eclipse.ecf.core.util.ECFException;
import org.eclipse.ecf.datashare.IChannelListener;
import org.eclipse.ecf.internal.provider.irc.Activator;
import org.eclipse.ecf.internal.provider.irc.identity.IRCID;
import org.eclipse.ecf.presence.chatroom.IChatRoomMessageSender;
+import org.eclipse.ecf.presence.im.IChatID;
import org.eclipse.ecf.provider.datashare.nio.NIOChannel;
import org.eclipse.ecf.provider.datashare.nio.NIODatashareContainer;
class IRCDatashareChannel extends NIOChannel {
- private String ip;
+ private Namespace receiverNamespace;
+
+ private IRCID userId;
private IChatRoomMessageSender sender;
- IRCDatashareChannel(NIODatashareContainer datashareContainer, ID userId,
+ private String ip;
+
+ IRCDatashareChannel(NIODatashareContainer datashareContainer,
+ Namespace receiverNamespace, ID userId,
IChatRoomMessageSender sender, ID id, IChannelListener listener)
throws ECFException {
super(datashareContainer, userId, id, listener);
+ this.receiverNamespace = receiverNamespace;
+ this.userId = (IRCID) userId;
this.sender = sender;
}
@@ -50,11 +59,11 @@ class IRCDatashareChannel extends NIOChannel {
}
protected void sendRequest(ID receiver) throws ECFException {
- // if we don't, we need to send a request and then connect
- IRCID id = (IRCID) receiver;
+ String name = receiver instanceof IChatID ? ((IChatID) receiver)
+ .getUsername() : receiver.getName();
StringBuffer buffer = new StringBuffer();
- buffer.append("/msg ").append(id.getUsername()); //$NON-NLS-1$
+ buffer.append("/msg ").append(name); //$NON-NLS-1$
buffer.append(" \01ECF "); //$NON-NLS-1$
buffer.append(ip).append(':').append(getLocalPort());
buffer.append('\01');
@@ -64,8 +73,13 @@ class IRCDatashareChannel extends NIOChannel {
public void sendMessage(ID receiver, byte[] message) throws ECFException {
Assert.isNotNull(receiver, "A receiver must be specified"); //$NON-NLS-1$
- Assert.isLegal(receiver instanceof IRCID,
- "Receiver id must be an IRCID"); //$NON-NLS-1$
+ String name = receiver instanceof IChatID ? ((IChatID) receiver)
+ .getUsername() : receiver.getName();
+ StringBuffer buffer = new StringBuffer(name);
+ buffer.append('@').append(userId.getHost());
+ buffer.append(':').append(userId.getPort());
+ receiver = receiverNamespace.createInstance(new Object[] { buffer
+ .toString() });
super.sendMessage(receiver, message);
}
diff --git a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareContainer.java b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareContainer.java
index 1137a35ea..57cc69474 100644
--- a/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareContainer.java
+++ b/providers/bundles/org.eclipse.ecf.provider.irc/src/org/eclipse/ecf/internal/provider/irc/datashare/IRCDatashareContainer.java
@@ -63,8 +63,8 @@ public class IRCDatashareContainer extends NIODatashareContainer implements
IChannelListener listener, Map properties) throws ECFException {
Assert.isNotNull(channelId, "Channel id cannot be null"); //$NON-NLS-1$
NIOChannel channel = new IRCDatashareChannel(this, container
- .getConnectedID(), container.getChatRoomMessageSender(),
- channelId, listener);
+ .getConnectNamespace(), container.getConnectedID(), container
+ .getChatRoomMessageSender(), channelId, listener);
channels.add(channel);
return channel;
}

Back to the top