package envoy.server.processors; import java.io.IOException; import envoy.event.IsTyping; import envoy.server.data.*; import envoy.server.net.*; /** * This processor handles incoming {@link IsTyping} events. * * @author Leon Hofmeister * @since Envoy Server v0.2-beta */ public final class IsTypingProcessor implements ObjectProcessor { private static final ConnectionManager connectionManager = ConnectionManager.getInstance(); private static final PersistenceManager persistenceManager = PersistenceManager.getInstance(); @Override public void process(IsTyping event, long socketID, ObjectWriteProxy writeProxy) throws IOException { final var contact = persistenceManager.getContactByID(event.get()); if (contact instanceof User) { if (connectionManager.isOnline(event.get())) writeProxy.write(connectionManager.getSocketID(event.get()), new IsTyping(connectionManager.getUserIDBySocketID(socketID))); } else writeProxy.writeToOnlineContacts(contact.getContacts(), new IsTyping(connectionManager.getUserIDBySocketID(socketID))); } }