diff options
author | rsuen | 2009-04-30 23:26:57 +0000 |
---|---|---|
committer | rsuen | 2009-04-30 23:26:57 +0000 |
commit | 6bdc90ad18c023a36d6cfa43170758258954fa2c (patch) | |
tree | 6d3a1f7c7b34f817104a5b6ef61ac4e1ba3cd818 /providers/bundles/org.eclipse.ecf.provider.irc | |
parent | c8c0547b7594863502a5ebb217e9ef854f563b1b (diff) | |
download | org.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')
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; } |