public void complete(long bytesTransferred, long transferTime) {
close();
// since it happens both at failure and and success, and because it is such an integral part of the service, the xferlog stays here
// xferlog(bytesTransferred, transferTime);
ProcessResult pcr = postProcess(bytesTransferred, transferTime);
connection.reply(226, pcr.message, true); // if this wasn't a race, the raceMessage will be null, and .reply(..) will print nothing
connection.respond("226- " + fs.getType() + " transfer of " + filename + " complete.");
connection.statline(transfer.getSpeed());
Event event = EventFactory.upload(user, fs, file, remoteHost, bytesTransferred, transferTime, pcr, "COMPLETE");
ServiceManager.getServices().getEventHandler().handleAfterEvent(event);