Start work on connection stuff

This commit is contained in:
Paul Schaub 2019-11-12 00:07:57 +01:00
parent 4a72937f04
commit 78d5376724
Signed by: vanitasvitae
GPG key ID: 62BEE9264BF17311
10 changed files with 117 additions and 6 deletions

View file

@ -0,0 +1,17 @@
package org.mercury_im.core;
import org.mercury_im.core.connection.ConnectionMethod;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
public interface ConnectionFactory<
CM extends ConnectionMethod<AC, AD>,
AC extends Account<AD, AU>,
AD extends Address.UserAddress,
AU extends Account.AuthMethod> {
Messenger getMessenger();
CM provideConnection(AC account);
}

View file

@ -1,4 +1,17 @@
package org.mercury_im.core;
import org.mercury_im.core.connection.ConnectionMethod;
import java.util.HashMap;
import java.util.Map;
public class Messenger {
private final Map<Long, ConnectionMethod> connections = new HashMap<>();
public void addConnection(ConnectionMethod connection) {
connections.put(connection.getAccount().getId(), connection);
}
}

View file

@ -0,0 +1,29 @@
package org.mercury_im.core.connection;
import org.mercury_im.core.Messenger;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
public abstract class AbstractConnectionMethod<
AC extends Account<AD, ?>,
AD extends Address.UserAddress>
implements ConnectionMethod<AC, AD> {
protected final AC account;
protected final Messenger messenger;
public AbstractConnectionMethod(AC account, Messenger messenger) {
this.account = account;
this.messenger = messenger;
}
@Override
public AC getAccount() {
return account;
}
@Override
public Messenger getMessenger() {
return messenger;
}
}

View file

@ -1,14 +1,19 @@
package org.mercury_im.core.connection;
import org.mercury_im.core.Messenger;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
import io.reactivex.Completable;
public interface ConnectionMethod<
AC extends Account<AD, ?>,
AD extends Address.UserAddress> {
AC getAccount();
void setAccount(AC account);
Messenger getMessenger();
Completable connect();
}

View file

@ -1,4 +1,4 @@
package org.mercury_im.core.connection;
package org.mercury_im.core.listener;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
@ -9,7 +9,7 @@ import org.mercury_im.messenger.core.entity.message.AbstractMessage;
public interface IncomingDirectMessageListener<
AC extends Account<AD, ?>,
AD extends Address.UserAddress,
IL extends Interlocutor<AC, AD>> {
IL extends Interlocutor<AC, AD, AD>> {
void onIncomingDirectMessage(AC account, DirectChat<IL, AC, AD> chat, AbstractMessage<AD, ?> message);

View file

@ -1,4 +1,4 @@
package org.mercury_im.core.connection;
package org.mercury_im.core.listener;
import org.mercury_im.messenger.core.entity.Account;
import org.mercury_im.messenger.core.entity.Address;
@ -12,8 +12,8 @@ public interface IncomingGroupChatMessageListener<
AD extends Address.UserAddress,
RA extends Address.RoomAddress,
PA extends Address.RoomParticipantAddress,
IL extends Interlocutor<AC, AD>> {
IL extends Interlocutor<AC, PA, AD>> {
void onIncomingDirectMessage(AC account, GroupChat<AC, AD, RA, PA> chat, AbstractMessage<PA, ?> message);
void onIncomingDirectMessage(AC account, GroupChat<AC, AD, RA, PA, IL> chat, AbstractMessage<PA, ?> message);
}

View file

@ -0,0 +1,5 @@
package org.mercury_im.core.listener;
public interface TypingEventListener {
}

View file

@ -3,6 +3,7 @@ apply plugin: 'java-library'
dependencies {
implementation project(":repository_xmpp")
implementation project(":entity_xmpp")
implementation project(":transport")
}
sourceCompatibility = "8"

View file

@ -0,0 +1,21 @@
package org.mercury_im.xmpp.connection;
import org.mercury_im.core.ConnectionFactory;
import org.mercury_im.core.Messenger;
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
import org.mercury_im.messenger.xmpp.entity.XmppAuthMethod;
public class XmppConnectionFactory implements ConnectionFactory<XmppConnectionMethod, XmppAccount, XmppAddress.XmppUserAddress, XmppAuthMethod> {
protected Messenger messenger;
public Messenger getMessenger() {
return messenger;
}
@Override
public XmppConnectionMethod provideConnection(XmppAccount account) {
return new XmppConnectionMethod(account, getMessenger());
}
}

View file

@ -0,0 +1,20 @@
package org.mercury_im.xmpp.connection;
import org.mercury_im.core.Messenger;
import org.mercury_im.core.connection.AbstractConnectionMethod;
import org.mercury_im.messenger.xmpp.entity.XmppAccount;
import org.mercury_im.messenger.xmpp.entity.XmppAddress;
import io.reactivex.Completable;
public class XmppConnectionMethod extends AbstractConnectionMethod<XmppAccount, XmppAddress.XmppUserAddress> {
public XmppConnectionMethod(XmppAccount account, Messenger messenger) {
super(account, messenger);
}
@Override
public Completable connect() {
return null;
}
}