package envoy.server.processors; import java.io.IOException; import java.util.stream.Collectors; import envoy.data.Contacts; import envoy.event.ContactSearchRequest; import envoy.server.ConnectionManager; import envoy.server.ObjectProcessor; import envoy.server.data.User; import envoy.server.database.PersistenceManager; import envoy.server.net.ObjectWriteProxy; /** * Project: envoy-server-standalone
* File: ContactsRequestEventProcessor.java
* Created: 08.02.2020
* * @author Kai S. K. Engelbart * @author Maximilian Käfer * @since Envoy Server Standalone v0.1-alpha */ public class ContactsRequestEventProcessor implements ObjectProcessor { /** * Writes a {@link Contacts} list to the client containing all {@link User}s * matching the search phrase contained inside the request. The client and their * contacts are excluded from the result. * * @since Envoy Server Standalone v0.1-alpha */ @Override public void process(ContactSearchRequest request, long socketId, ObjectWriteProxy writeProxy) throws IOException { writeProxy.write(socketId, new Contacts(PersistenceManager.getPersistenceManager() .searchUsers(request.get(), ConnectionManager.getInstance().getUserIdBySocketId(socketId)) .stream() .map(User::toCommonUser) .collect(Collectors.toList()))); } @Override public Class getInputClass() { return ContactSearchRequest.class; } }