/** * Registers the request to begin a federation save. Note that the save isn't actually started in * this handler, the request is just checked to see if everything is OK and the message is sent * out. The actual recording of the save point (in the SaveManager) is done in the incoming * handler. */ public void process(MessageContext context) throws Exception { // basic validity checks lrcState.checkJoined(); lrcState.checkSave(); lrcState.checkRestore(); // get the request and details SaveRequest request = context.getRequest(SaveRequest.class, this); String label = request.getLabel(); // make sure we haven't got a null handle if (label == null) throw new RTIinternalError("Save label was null"); if (logger.isDebugEnabled()) { String time = request.isTimestamped() ? "@" + request.getTimestamp() : "@now"; logger.debug("REQUEST Start federation SAVE with label [" + label + "] " + time); } // if a timestamp is present, validate it if (request.isTimestamped() && request.getTimestamp() < timeStatus().getCurrentTime()) throw new JFederationTimeAlreadyPassed("Time " + request.getTimestamp() + " has passed"); // pass the request on to the federation connection.broadcast(request); if (logger.isInfoEnabled()) logger.info("Broadcast request to start federation save with label [" + label + "]"); context.success(); }