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/src/main/java/envoy/server/processors/MessageStatusChangeProcesso...

46 lines
1.7 KiB
Java

package envoy.server.processors;
import java.io.IOException;
import envoy.data.Message.MessageStatus;
import envoy.event.MessageStatusChangeEvent;
import envoy.exception.EnvoyException;
import envoy.server.ObjectProcessor;
import envoy.server.data.PersistenceManager;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
/**
* Project: <strong>envoy-server-standalone</strong><br>
* File: <strong>MessageStatusChangeProcessor.java</strong><br>
* Created: <strong>10 Jan 2020</strong><br>
*
* @author Leon Hofmeister
* @since Envoy Server Standalone v0.1-alpha
*/
public class MessageStatusChangeProcessor implements ObjectProcessor<MessageStatusChangeEvent> {
@Override
public Class<MessageStatusChangeEvent> getInputClass() { return MessageStatusChangeEvent.class; }
@Override
public void process(MessageStatusChangeEvent input, long socketId, ObjectWriteProxy writeProxy) throws IOException {
try {
// any other status than read is not supposed to be sent to the server
if (input.get() != MessageStatus.READ) throw new EnvoyException("Message" + input.getId() + "has an invalid status");
} catch (EnvoyException e) {
throw new IOException(e);
}
ConnectionManager conMan = ConnectionManager.getInstance();
PersistenceManager perMan = PersistenceManager.getInstance();
envoy.server.data.Message msg = perMan.getMessageById(input.getId());
msg.setStatus(input.get());
msg.setReadDate(input.getDate());
perMan.updateMessage(msg);
// Notifies the sender of the message about the status-update to READ
if (conMan.isOnline(msg.getSender().getId())) writeProxy.write(conMan.getSocketId(msg.getSender().getId()), input);
}
}