/*************************************************************************** * * * Response.java * * ------------------- * * date : 01.09.2004, 18:07 * * copyright : (C) 2004-2008 Distributed and * * Mobile Systems Group * * Lehrstuhl fuer Praktische Informatik * * Universitaet Bamberg * * http://www.uni-bamberg.de/pi/ * * email : sven.kaffille@uni-bamberg.de * * karsten.loesing@uni-bamberg.de * * * * * ***************************************************************************/ /*************************************************************************** * * * This program is free software; you can redistribute it and/or modify * * it under the terms of the GNU General Public License as published by * * the Free Software Foundation; either version 2 of the License, or * * (at your option) any later version. * * * * A copy of the license can be found in the license.txt file supplied * * with this software or at: http://www.gnu.org/copyleft/gpl.html * * * ***************************************************************************/ package de.uniba.wiai.lspi.chord.com.socket; import java.io.Serializable; /** * @author sven * @version 1.0.5 */ final class Response extends Message { /** * */ private static final long serialVersionUID = -3635544762985447437L; /** * Constant holding the value that indicates that the {@link Request} that * caused this response has been executed successfully. */ public static final int REQUEST_SUCCESSFUL = 1; /** * Constant holding the value that indicates that the {@link Request} that * caused this response failed. */ public static final int REQUEST_FAILED = 0; /** * A String describing the failure if this is a failure response. * */ private String failureReason; /** * The result of the invocation if successful and the invocation has a * result. * */ private Serializable result; /** * The method to invoke. Must be one of the constants defined in * {@link MethodConstants} . * */ private int methodIdentifier = -1; /** * Status of the request {@link #REQUEST_FAILED} or {@link #REQUEST_SUCCESSFUL}. */ private int status = REQUEST_SUCCESSFUL; /** * String defining the request that this is the response for. */ private String inReplyTo; /** * If this is a failure response and the failure has been caused by any * {@link Throwable} this can be set to the <code>Throwable</code>. */ private Throwable throwable = null; /** * Creates a new instance of Response * * @param status1 * @param methodIdentifier1 * @param inReplyTo1 */ Response(int status1, int methodIdentifier1, String inReplyTo1) { super(); this.status = status1; this.methodIdentifier = methodIdentifier1; this.inReplyTo = inReplyTo1; } /** * @return The identifier of the method that was requested by the request, * for which this is the response. See {@link MethodConstants}. */ int getMethodIdentifier() { return this.methodIdentifier; } /** * @return Integer representing the state of this response. See * {@link Response#REQUEST_FAILED}, * {@link Response#REQUEST_SUCCESSFUL}. */ int getStatus() { return this.status; } /** * @return <code>true</code> if the request, for which this is a response, * caused a failure on the remote node. */ boolean isFailureResponse() { return (this.status == REQUEST_FAILED); } /** * If this a failure reponse, this method returns the Throwable that caused * the failure. Otherwise <code>null</code>. * * @return If this a failure reponse, this method returns the Throwable that * caused the failure. Otherwise <code>null</code>. */ Throwable getThrowable() { return this.throwable; } /** * @return The reason for failure of the request, for which this is the * response. */ String getFailureReason() { return this.failureReason; } /** * @param t * The throwable to set. */ void setThrowable(Throwable t) { this.throwable = t; } /** * @param reason */ void setFailureReason(String reason) { this.status = REQUEST_FAILED; this.failureReason = reason; } /** * @return The result of the request for which this is the response. */ Serializable getResult() { return this.result; } /** * @param result1 */ void setResult(Serializable result1) { this.result = result1; } /** * @return String that identifies the request for that this is the response. */ String getInReplyTo() { return this.inReplyTo; } }