Added IsWriting event on common, server and partially on client side

additionally fixed NullPointerException in ContactSearchScene and typo
in Javadoc

PS: this is the 1000th commit in Envoy! 🥳 🎉
This commit is contained in:
delvh
2020-07-25 16:26:13 +02:00
parent 72d1e074f4
commit 6f8859c3fd
9 changed files with 151 additions and 18 deletions

View File

@ -69,7 +69,8 @@ public class Startup {
new UserStatusChangeProcessor(),
new IDGeneratorRequestProcessor(),
new UserSearchProcessor(),
new ContactOperationProcessor())));
new ContactOperationProcessor(),
new IsWritingProcessor())));
// Initialize the current message ID
final PersistenceManager persistenceManager = PersistenceManager.getInstance();

View File

@ -0,0 +1,37 @@
package envoy.server.processors;
import java.io.IOException;
import envoy.event.IsWriting;
import envoy.server.data.PersistenceManager;
import envoy.server.data.User;
import envoy.server.net.ConnectionManager;
import envoy.server.net.ObjectWriteProxy;
/**
* This processor handles incoming {@link IsWriting}s.
* <p>
* Project: <strong>envoy-server-standalone</strong><br>
* File: <strong>IsWritingProcessor.java</strong><br>
* Created: <strong>24.07.2020</strong><br>
*
* @author Leon Hofmeister
* @since Envoy Server v0.2-beta
*/
public class IsWritingProcessor implements ObjectProcessor<IsWriting> {
private static final ConnectionManager connectionManager = ConnectionManager.getInstance();
private static final PersistenceManager persistenceManager = PersistenceManager.getInstance();
@Override
public Class<IsWriting> getInputClass() { return IsWriting.class; }
@Override
public void process(IsWriting input, long socketID, ObjectWriteProxy writeProxy) throws IOException {
final var contact = persistenceManager.getContactByID(input.get());
if (contact instanceof User) {
final var destinationID = input.getDestinationID();
if (connectionManager.isOnline(destinationID)) writeProxy.write(connectionManager.getSocketID(destinationID), input);
} else writeProxy.writeToOnlineContacts(contact.getContacts(), input);
}
}