@Override
	public void run() {
		try(DatagramSocket workerSocket = new DatagramSocket()) {
			
			Sender statusSender = new Sender(workerSocket, remotePort, remoteAddress);
			
			if(!isValid()) {
				statusSender.sendObject(new ERR(ERR.FILE_ALREADY_EXISTS, "The requested file" + request.fileName + " aleardy exists on the server."));
				return;
			}
			else {
				statusSender.sendObject(new ACK(0));
			}
			
			Logger.log("Starting file receive");
			try {
				byte[] result = FileReceiver.receiveFile(workerSocket, remoteAddress);
				Logger.log("Got file on server: " + new String(result));
			}
			catch(IOException e) {
				Logger.fatalError("Failed file tranfer: " + e.getMessage(), e);
			}
			
		} catch (SocketException e) {
			Logger.fatalError("Failed to create server worker: ", e);
		}
	}