@ -2,6 +2,7 @@ package envoy.server.processors;
|
||||
|
||||
import java.io.IOException;
|
||||
import java.util.*;
|
||||
import java.util.logging.Logger;
|
||||
|
||||
import javax.persistence.NoResultException;
|
||||
|
||||
@ -15,6 +16,7 @@ import envoy.server.data.Message;
|
||||
import envoy.server.data.PersistenceManager;
|
||||
import envoy.server.net.ConnectionManager;
|
||||
import envoy.server.net.ObjectWriteProxy;
|
||||
import envoy.util.EnvoyLog;
|
||||
|
||||
/**
|
||||
* This {@link ObjectProcessor} handles {@link LoginCredentials}.<br>
|
||||
@ -32,16 +34,18 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
|
||||
private final PersistenceManager persistenceManager = PersistenceManager.getInstance();
|
||||
private final ConnectionManager connectionManager = ConnectionManager.getInstance();
|
||||
|
||||
private static final Logger logger = EnvoyLog.getLogger(LoginCredentialProcessor.class);
|
||||
|
||||
@Override
|
||||
public void process(LoginCredentials input, long socketID, ObjectWriteProxy writeProxy) throws IOException {
|
||||
UserStatusChangeProcessor.setWriteProxy(writeProxy);
|
||||
System.out.println(String.format("Received login credentials %s from socket ID %d", input, socketID));
|
||||
logger.info(String.format("Received login credentials %s from socket ID %d", input, socketID));
|
||||
|
||||
envoy.server.data.User user = getUser(input, socketID, writeProxy);
|
||||
|
||||
// Not logged in successfully
|
||||
if (user == null) {
|
||||
System.out.println("Rejecting handshake on socket " + socketID);
|
||||
logger.info("Rejecting handshake on socket " + socketID);
|
||||
return;
|
||||
}
|
||||
connectionManager.registerUser(user.getID(), socketID);
|
||||
@ -52,25 +56,25 @@ public class LoginCredentialProcessor implements ObjectProcessor<LoginCredential
|
||||
UserStatusChangeProcessor.updateUserStatus(user);
|
||||
|
||||
// Complete handshake
|
||||
System.out.println("Sending user...");
|
||||
logger.fine("Sending user...");
|
||||
writeProxy.write(socketID, user.toCommon());
|
||||
System.out.println("Acquiring pending messages for the client...");
|
||||
logger.fine("Acquiring pending messages for the client...");
|
||||
List<Message> pendingMessages = PersistenceManager.getInstance().getPendingMessages(user);
|
||||
for (Message msg : pendingMessages)
|
||||
if (msg.getStatus() == MessageStatus.SENT) {
|
||||
System.out.println("Sending message " + msg.toCommon());
|
||||
logger.info("Sending message " + msg.toCommon());
|
||||
writeProxy.write(socketID, msg.toCommon());
|
||||
msg.setReceivedDate(new Date());
|
||||
msg.setStatus(MessageStatus.RECEIVED);
|
||||
if (connectionManager.isOnline(msg.getSender().getID())) {
|
||||
var evt = new MessageStatusChangeEvent(msg.toCommon());
|
||||
System.out.println("Sending messageStatusChangeEvent to sender " + evt);
|
||||
logger.info("Sending messageStatusChangeEvent to sender " + evt);
|
||||
writeProxy.write(connectionManager.getSocketId(msg.getSender().getID()), evt);
|
||||
}
|
||||
PersistenceManager.getInstance().updateMessage(msg);
|
||||
} else {
|
||||
var evt = new MessageStatusChangeEvent(msg.toCommon());
|
||||
System.out.println("Sending messageStatusChangeEvent " + evt);
|
||||
logger.info("Sending messageStatusChangeEvent " + evt);
|
||||
writeProxy.write(socketID, evt);
|
||||
}
|
||||
}
|
||||
|
Reference in New Issue
Block a user