protected void processConnection() {
		while(true) {
			try {
				int request = (Integer) input.readObject();
				
				switch(request) {
				case ALL_LIST:
					sendAllUserList();
					break;
				case SEND_FILE:
					int recieverID = (Integer) input.readObject();
					ClientHandler recieverHandler = Server.clientConnections.get(recieverID);
					ClientHandler senderHandler = Server.clientConnections.get(clientID);
					
					server.serverGUI.showMessage(senderHandler.getClientName() + 
							" is trying to send a file to " + recieverHandler.getClientName());
					recieverHandler.infoProvider.sendDelayedMessage(RECEIVE_FILE, clientID, senderHandler.getClientName());
					recieverConnection = establishFileTransferConnection();
					System.out.println("Reciever Connection: " + recieverConnection);
					break;
				case READY:
					System.out.println("Reciever is ready");
					int senderID = (Integer) input.readObject();
					InfoProvider senderInfoProvider = Server.clientConnections.get(senderID).infoProvider;
					senderInfoProvider.sendDelayedMessage(READY);
					senderConnection = establishFileTransferConnection();
					System.out.println("Reciever Connection: " + recieverConnection);
					System.out.println("Sender Connection: " + senderConnection);
					TransferFile transferFile = new TransferFile(recieverConnection, 
							senderConnection, server.serverGUI);
					Thread transferThread = new Thread(transferFile);
					transferThread.start();
					break;
				case CANCEL:
					sendData(CANCEL);
					break;
				}
			}
			catch(ClassNotFoundException classNotFoundException) {
				server.serverGUI.showMessage("Unknown object type recieved");
			}
			catch(IOException ioException) {
				server.serverGUI.showMessage("Error sending data");
			}
		}
	}