protected void deliverFromAgent(Message message) { // Deliver to admin or simulation (when simulation exists) String receiver = message.getReceiver(); SimulationAgent proxy; if (isClosed) { // closed channel } else if (Admin.ADMIN.equals(receiver)) { Transportable content = message.getContent(); if (message.getSender() == null) { message.setSender(name); } if ((content instanceof AdminContent) && (((AdminContent) content).getType() == AdminContent.QUIT)) { // Time to close this connection deliverToAgent(message.createReply(new AdminContent(AdminContent.QUIT))); close(); } else { admin.deliverMessageFromAgent(this, message); } } else if ((proxy = this.proxy) != null) { proxy.deliverFromAgent(message); } else { // not a valid receiver because the agent is not in a game } }