Implemented online contact notification about contact list modification
This commit is contained in:
		@@ -1,9 +1,10 @@
 | 
				
			|||||||
package envoy.server.processors;
 | 
					package envoy.server.processors;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
import java.io.IOException;
 | 
					import java.io.IOException;
 | 
				
			||||||
 | 
					import java.util.Arrays;
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
					import envoy.data.Contacts;
 | 
				
			||||||
import envoy.event.ContactOperationEvent;
 | 
					import envoy.event.ContactOperationEvent;
 | 
				
			||||||
import envoy.event.ContactOperationEvent.Operation;
 | 
					 | 
				
			||||||
import envoy.server.ConnectionManager;
 | 
					import envoy.server.ConnectionManager;
 | 
				
			||||||
import envoy.server.ObjectProcessor;
 | 
					import envoy.server.ObjectProcessor;
 | 
				
			||||||
import envoy.server.database.PersistenceManager;
 | 
					import envoy.server.database.PersistenceManager;
 | 
				
			||||||
@@ -19,12 +20,25 @@ import envoy.server.net.ObjectWriteProxy;
 | 
				
			|||||||
 */
 | 
					 */
 | 
				
			||||||
public class ContactOperationProcessor implements ObjectProcessor<ContactOperationEvent> {
 | 
					public class ContactOperationProcessor implements ObjectProcessor<ContactOperationEvent> {
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
						private static final ConnectionManager connectionManager = ConnectionManager.getInstance();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
	@Override
 | 
						@Override
 | 
				
			||||||
	public void process(ContactOperationEvent operation, long socketId, ObjectWriteProxy writeProxy) throws IOException {
 | 
						public void process(ContactOperationEvent evt, long socketId, ObjectWriteProxy writeProxy) throws IOException {
 | 
				
			||||||
		if (operation.getOperationType() == Operation.ADD) {
 | 
							switch (evt.getOperationType()) {
 | 
				
			||||||
			long userId = ConnectionManager.getInstance().getUserIdBySocketId(socketId);
 | 
								case ADD:
 | 
				
			||||||
			System.out.printf("Adding user %s to the contact list of user %d.%n", operation.get(), userId);
 | 
									final long userId = ConnectionManager.getInstance().getUserIdBySocketId(socketId);
 | 
				
			||||||
			PersistenceManager.getPersistenceManager().addContact(userId, operation.get().getId());
 | 
									final long contactId = evt.get().getId();
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									System.out.printf("Adding user %s to the contact list of user %d.%n", evt.get(), userId);
 | 
				
			||||||
 | 
									PersistenceManager.getPersistenceManager().addContact(userId, contactId);
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 | 
									// Notify the contact
 | 
				
			||||||
 | 
									// TODO: cache notification for offline mode
 | 
				
			||||||
 | 
									if (ConnectionManager.getInstance().isOnline(contactId)) writeProxy.write(connectionManager.getSocketId(contactId),
 | 
				
			||||||
 | 
											new Contacts(Arrays.asList(PersistenceManager.getPersistenceManager().getUserById(userId).toCommonUser())));
 | 
				
			||||||
 | 
									break;
 | 
				
			||||||
 | 
								default:
 | 
				
			||||||
 | 
									System.err.printf("Received %s with an unsupported operation.%n", evt);
 | 
				
			||||||
		}
 | 
							}
 | 
				
			||||||
	}
 | 
						}
 | 
				
			||||||
 | 
					
 | 
				
			||||||
 
 | 
				
			|||||||
		Reference in New Issue
	
	Block a user