package envoy.server.processors; import java.io.IOException; import java.util.Arrays; import envoy.data.Contacts; import envoy.event.ContactOperationEvent; import envoy.server.ConnectionManager; import envoy.server.ObjectProcessor; import envoy.server.database.PersistenceManager; import envoy.server.net.ObjectWriteProxy; /** * Project: envoy-server-standalone
* File: ContactOperationProcessor.java
* Created: 08.02.2020
* * @author Kai S. K. Engelbart * @since Envoy Server Standalone v0.1-alpha */ public class ContactOperationProcessor implements ObjectProcessor { private static final ConnectionManager connectionManager = ConnectionManager.getInstance(); @Override public void process(ContactOperationEvent evt, long socketId, ObjectWriteProxy writeProxy) throws IOException { switch (evt.getOperationType()) { case ADD: final long userId = ConnectionManager.getInstance().getUserIdBySocketId(socketId); final long contactId = evt.get().getId(); System.out.printf("Adding user %s to the contact list of user %d.%n", evt.get(), userId); PersistenceManager.getInstance().addContact(userId, contactId); // Notify the contact if online if (ConnectionManager.getInstance().isOnline(contactId)) writeProxy.write(connectionManager.getSocketId(contactId), new Contacts(Arrays.asList(PersistenceManager.getInstance().getUserById(userId).toCommonUser()))); break; default: System.err.printf("Received %s with an unsupported operation.%n", evt); } } @Override public Class getInputClass() { return ContactOperationEvent.class; } }