This repository has been archived on 2021-12-05. You can view files and clone it, but cannot push or open issues or pull requests.
envoy/server/src/main/java/envoy/server/processors/MessageStatusChangeProcesso...

44 lines
1.4 KiB
Java
Executable File

package envoy.server.processors;
import java.io.IOException;
import java.util.logging.*;
import envoy.data.Message.MessageStatus;
import envoy.event.MessageStatusChange;
import envoy.util.EnvoyLog;
import envoy.server.data.PersistenceManager;
import envoy.server.net.*;
/**
* @author Leon Hofmeister
* @since Envoy Server Standalone v0.1-alpha
*/
public final class MessageStatusChangeProcessor implements ObjectProcessor<MessageStatusChange> {
private final ConnectionManager connectionManager = ConnectionManager.getInstance();
private final PersistenceManager persistenceManager = PersistenceManager.getInstance();
private final Logger logger =
EnvoyLog.getLogger(MessageStatusChangeProcessor.class);
@Override
public void process(MessageStatusChange statusChange, long socketID,
ObjectWriteProxy writeProxy) throws IOException {
// Any other status than READ is not supposed to be sent to the server
if (statusChange.get() != MessageStatus.READ) {
logger.log(Level.WARNING, "Invalid " + statusChange);
return;
}
final var msg = persistenceManager.getMessageByID(statusChange.getID());
msg.read();
persistenceManager.updateMessage(msg);
// Notifies the sender of the message about the status-update to READ
final long senderID = msg.getSender().getID();
if (connectionManager.isOnline(senderID))
writeProxy.write(connectionManager.getSocketID(senderID), statusChange);
}
}