Mercury-IM/xmpp/src/main/java/org/mercury_im/messenger/transport/xmpp/XmppTcpConnectionFactory.java

37 lines
1.5 KiB
Java

package org.mercury_im.messenger.transport.xmpp;
import org.jivesoftware.smack.XMPPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnection;
import org.jivesoftware.smack.tcp.XMPPTCPConnectionConfiguration;
import org.jxmpp.jid.EntityBareJid;
import org.jxmpp.jid.impl.JidCreate;
import org.mercury_im.messenger.Messenger;
import org.mercury_im.messenger.entity.Account;
import org.mercury_im.messenger.entity.PasswordAuthentication;
public class XmppTcpConnectionFactory extends XmppConnectionFactory<XMPPTCPConnectionConfiguration> {
public XmppTcpConnectionFactory(Messenger messenger) {
super(messenger);
}
@Override
protected XMPPTCPConnectionConfiguration getConfiguration(Account account) {
XMPPTCPConnectionConfiguration.Builder configBuilder = XMPPTCPConnectionConfiguration.builder();
configBuilder.setConnectTimeout(20 * 1000);
if (account.getAuthentication() instanceof PasswordAuthentication) {
PasswordAuthentication authPassword = (PasswordAuthentication) account.getAuthentication();
EntityBareJid accountAddress = JidCreate.entityBareFromOrThrowUnchecked(account.getAddress());
configBuilder.setXmppAddressAndPassword(accountAddress, authPassword.getPassword());
}
return configBuilder.build();
}
@Override
protected XMPPConnection createXmppConnection(XMPPTCPConnectionConfiguration configuration) {
return new XMPPTCPConnection(configuration);
}
}