Remove message and event processors from client
This commit is contained in:
parent
8eb7743057
commit
f6eeeee79b
@ -5,10 +5,11 @@ import java.nio.channels.*;
|
||||
import java.nio.file.StandardOpenOption;
|
||||
import java.time.Instant;
|
||||
import java.util.*;
|
||||
import java.util.logging.Level;
|
||||
import java.util.logging.*;
|
||||
|
||||
import envoy.client.event.EnvoyCloseEvent;
|
||||
import envoy.data.*;
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.event.*;
|
||||
import envoy.exception.EnvoyException;
|
||||
import envoy.util.*;
|
||||
@ -45,6 +46,8 @@ public final class LocalDB implements EventListener {
|
||||
|
||||
private final File dbDir, idGeneratorFile, lastLoginFile, usersFile;
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(LocalDB.class);
|
||||
|
||||
/**
|
||||
* Constructs an empty local database.
|
||||
*
|
||||
@ -219,6 +222,22 @@ public final class LocalDB implements EventListener {
|
||||
}
|
||||
}
|
||||
|
||||
@Event(priority = 150)
|
||||
private void onMessage(Message msg) { if (msg.getStatus() == MessageStatus.SENT) msg.nextStatus(); }
|
||||
|
||||
@Event(priority = 150)
|
||||
private void onGroupMessage(GroupMessage msg) {
|
||||
// TODO: Cancel event once EventBus is updated
|
||||
if (msg.getStatus() == MessageStatus.WAITING || msg.getStatus() == MessageStatus.READ)
|
||||
logger.warning("The groupMessage has the unexpected status " + msg.getStatus());
|
||||
}
|
||||
|
||||
@Event(priority = 150, includeSubtypes = true)
|
||||
private void onMessageStatusChange(MessageStatusChange evt) {
|
||||
// TODO: Cancel event once EventBus is updated
|
||||
if (evt.get().ordinal() < MessageStatus.RECEIVED.ordinal()) logger.warning("Received invalid " + evt);
|
||||
}
|
||||
|
||||
/**
|
||||
* Stores a new authentication token.
|
||||
*
|
||||
|
@ -125,21 +125,16 @@ public final class Client implements EventListener, Closeable {
|
||||
receiver.removeAllProcessors();
|
||||
|
||||
// Process incoming messages
|
||||
final var receivedMessageProcessor = new ReceivedMessageProcessor();
|
||||
final var receivedGroupMessageProcessor = new ReceivedGroupMessageProcessor();
|
||||
final var messageStatusChangeProcessor = new MessageStatusChangeProcessor();
|
||||
final var groupMessageStatusChangeProcessor = new GroupMessageStatusChangeProcessor();
|
||||
|
||||
receiver.registerProcessor(GroupMessage.class, receivedGroupMessageProcessor);
|
||||
receiver.registerProcessor(Message.class, receivedMessageProcessor);
|
||||
receiver.registerProcessor(MessageStatusChange.class, messageStatusChangeProcessor);
|
||||
receiver.registerProcessor(GroupMessageStatusChange.class, groupMessageStatusChangeProcessor);
|
||||
receiver.registerProcessor(GroupMessage.class, eventBus::dispatch);
|
||||
receiver.registerProcessor(Message.class, eventBus::dispatch);
|
||||
receiver.registerProcessor(MessageStatusChange.class, eventBus::dispatch);
|
||||
receiver.registerProcessor(GroupMessageStatusChange.class, eventBus::dispatch);
|
||||
|
||||
// Relay cached messages and message status changes
|
||||
cacheMap.get(Message.class).setProcessor(receivedMessageProcessor);
|
||||
cacheMap.get(GroupMessage.class).setProcessor(receivedGroupMessageProcessor);
|
||||
cacheMap.get(MessageStatusChange.class).setProcessor(messageStatusChangeProcessor);
|
||||
cacheMap.get(GroupMessageStatusChange.class).setProcessor(groupMessageStatusChangeProcessor);
|
||||
cacheMap.get(Message.class).setProcessor(eventBus::dispatch);
|
||||
cacheMap.get(GroupMessage.class).setProcessor(eventBus::dispatch);
|
||||
cacheMap.get(MessageStatusChange.class).setProcessor(eventBus::dispatch);
|
||||
cacheMap.get(GroupMessageStatusChange.class).setProcessor(eventBus::dispatch);
|
||||
|
||||
// Process user status changes
|
||||
receiver.registerProcessor(UserStatusChange.class, eventBus::dispatch);
|
||||
@ -176,7 +171,7 @@ public final class Client implements EventListener, Closeable {
|
||||
receiver.registerProcessor(GroupCreationResult.class, eventBus::dispatch);
|
||||
|
||||
// Request a generator if none is present or the existing one is consumed
|
||||
if (!localDB.hasIDGenerator() || !localDB.getIDGenerator().hasNext()) requestIdGenerator();
|
||||
if (!localDB.hasIDGenerator() || !localDB.getIDGenerator().hasNext()) requestIDGenerator();
|
||||
|
||||
// Relay caches
|
||||
cacheMap.getMap().values().forEach(Cache::relay);
|
||||
@ -190,7 +185,7 @@ public final class Client implements EventListener, Closeable {
|
||||
* @throws RuntimeException if the object serialization failed
|
||||
* @since Envoy Client v0.2-beta
|
||||
*/
|
||||
public void send(Object obj) throws IllegalStateException, RuntimeException {
|
||||
public void send(Serializable obj) throws IllegalStateException, RuntimeException {
|
||||
checkOnline();
|
||||
logger.log(Level.FINE, "Sending " + obj);
|
||||
try {
|
||||
@ -217,7 +212,7 @@ public final class Client implements EventListener, Closeable {
|
||||
*
|
||||
* @since Envoy Client v0.3-alpha
|
||||
*/
|
||||
public void requestIdGenerator() {
|
||||
public void requestIDGenerator() {
|
||||
logger.log(Level.INFO, "Requesting new id generator...");
|
||||
send(new IDGeneratorRequest());
|
||||
}
|
||||
|
@ -1,25 +0,0 @@
|
||||
package envoy.client.net;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.event.GroupMessageStatusChange;
|
||||
import envoy.util.EnvoyLog;
|
||||
|
||||
import dev.kske.eventbus.EventBus;
|
||||
|
||||
/**
|
||||
* @author Maximilian Käfer
|
||||
* @since Envoy Client v0.1-beta
|
||||
*/
|
||||
public final class GroupMessageStatusChangeProcessor implements Consumer<GroupMessageStatusChange> {
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(GroupMessageStatusChangeProcessor.class);
|
||||
|
||||
@Override
|
||||
public void accept(GroupMessageStatusChange evt) {
|
||||
if (evt.get().ordinal() < MessageStatus.RECEIVED.ordinal()) logger.warning("Received invalid group message status change " + evt);
|
||||
else EventBus.getInstance().dispatch(evt);
|
||||
}
|
||||
}
|
@ -1,32 +0,0 @@
|
||||
package envoy.client.net;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.event.MessageStatusChange;
|
||||
import envoy.util.EnvoyLog;
|
||||
|
||||
import dev.kske.eventbus.EventBus;
|
||||
|
||||
/**
|
||||
* @author Kai S. K. Engelbart
|
||||
* @since Envoy Client v0.3-alpha
|
||||
*/
|
||||
public final class MessageStatusChangeProcessor implements Consumer<MessageStatusChange> {
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(MessageStatusChangeProcessor.class);
|
||||
|
||||
/**
|
||||
* Dispatches a {@link MessageStatusChange} if the status is
|
||||
* {@code RECEIVED} or {@code READ}.
|
||||
*
|
||||
* @param evt the status change event
|
||||
* @since Envoy Client v0.3-alpha
|
||||
*/
|
||||
@Override
|
||||
public void accept(MessageStatusChange evt) {
|
||||
if (evt.get().ordinal() < MessageStatus.RECEIVED.ordinal()) logger.warning("Received invalid message status change " + evt);
|
||||
else EventBus.getInstance().dispatch(evt);
|
||||
}
|
||||
}
|
@ -1,29 +0,0 @@
|
||||
package envoy.client.net;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import envoy.data.GroupMessage;
|
||||
import envoy.data.Message.MessageStatus;
|
||||
import envoy.util.EnvoyLog;
|
||||
|
||||
import dev.kske.eventbus.EventBus;
|
||||
|
||||
/**
|
||||
* @author Maximilian Käfer
|
||||
* @since Envoy Client v0.1-beta
|
||||
*/
|
||||
public final class ReceivedGroupMessageProcessor implements Consumer<GroupMessage> {
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(ReceivedGroupMessageProcessor.class);
|
||||
|
||||
@Override
|
||||
public void accept(GroupMessage groupMessage) {
|
||||
if (groupMessage.getStatus() == MessageStatus.WAITING || groupMessage.getStatus() == MessageStatus.READ)
|
||||
logger.warning("The groupMessage has the unexpected status " + groupMessage.getStatus());
|
||||
|
||||
// Dispatch event
|
||||
EventBus.getInstance().dispatch(groupMessage);
|
||||
}
|
||||
|
||||
}
|
@ -1,24 +0,0 @@
|
||||
package envoy.client.net;
|
||||
|
||||
import java.util.function.Consumer;
|
||||
|
||||
import envoy.data.Message;
|
||||
import envoy.data.Message.MessageStatus;
|
||||
|
||||
import dev.kske.eventbus.EventBus;
|
||||
|
||||
/**
|
||||
* @author Kai S. K. Engelbart
|
||||
* @since Envoy Client v0.3-alpha
|
||||
*/
|
||||
public final class ReceivedMessageProcessor implements Consumer<Message> {
|
||||
|
||||
@Override
|
||||
public void accept(Message message) {
|
||||
// Update status to RECEIVED
|
||||
if (message.getStatus() == MessageStatus.SENT) message.nextStatus();
|
||||
|
||||
// Dispatch message
|
||||
EventBus.getInstance().dispatch(message);
|
||||
}
|
||||
}
|
@ -694,7 +694,7 @@ public final class ChatScene implements EventListener, Restorable {
|
||||
scrollToMessageListEnd();
|
||||
|
||||
// Request a new ID generator if all IDs were used
|
||||
if (!localDB.getIDGenerator().hasNext() && client.isOnline()) client.requestIdGenerator();
|
||||
if (!localDB.getIDGenerator().hasNext() && client.isOnline()) client.requestIDGenerator();
|
||||
}
|
||||
|
||||
// Clear text field and disable post button
|
||||
|
@ -15,8 +15,7 @@ public final class ReflectionUtil {
|
||||
|
||||
/**
|
||||
* Gets all declared variable values of the given instance that have the
|
||||
* specified
|
||||
* class.
|
||||
* specified class.
|
||||
* <p>
|
||||
* (i.e. can get all {@code JComponents} (Swing) or {@code Nodes} (JavaFX) in a
|
||||
* GUI class).
|
||||
|
Reference in New Issue
Block a user