/***************************************************************************
* *
* Request.java *
* ------------------- *
* date : 02.09.2004, 13:48 *
* 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;
import de.uniba.wiai.lspi.chord.service.Chord;
/**
* <p>
* This class represents a request for the invocation of a method on
* a {@link Chord node}. <code>Request</code>s are sent by a
* {@link SocketProxy} to the {@link SocketEndpoint} of the node the
* {@link SocketProxy} represents.
* </p>
* <p>
* Results of a method invocation are sent back to the {@link SocketProxy}
* by {@link SocketEndpoint} with help of a {@link Response} message.
* with help of
* </p>
*
* @author sven
* @version 1.0.5
*/
final class Request extends Message {
/**
*
*/
private static final long serialVersionUID = -1295124240351172262L;
/**
* The type of this request. One of the method identifiers from
* {@link MethodConstants}.
*/
private int type;
/**
* The parameters for the request. Must match the parameters for the method identified by {@link #type} in types and order.
*/
private Serializable[] parameters = null;
/**
* Identifier used to identify this request. This identifier must be the value of the {@link Response#getInReplyTo()} field of a {@link Response} send for this request.
*/
private String replyWith;
/**
* Creates a new instance of Request
*
* @param type1
* The type of this request. One of the method identifiers from
* {@link MethodConstants}.
* @param replyWith1
* Identifier used to identify this request. This identifier must
* be the value of the {@link Response#getInReplyTo()} field of a
* {@link Response} send for this request.
*/
protected Request(int type1, String replyWith1) {
super();
this.type = type1;
this.replyWith = replyWith1;
}
/**
* Get the type of this request.
*
* @return The type of this request. One of the method identifiers from
* {@link MethodConstants}.
*/
int getRequestType() {
return this.type;
}
/**
* Set the parameters for this request.
*
* @param parameters1
* The parameters for the request. Must match the parameters for
* the method identified by {@link #type} in types and order.
*/
void setParameters(Serializable[] parameters1) {
this.parameters = parameters1;
}
/**
* Get the parameters that shall be passed to the method that is requested
* by this.
*
* @return The parameters for the request. Must match the parameters for the
* method identified by {@link #type} in types and order.
*/
Serializable[] getParameters() {
return this.parameters;
}
/**
* Get the value of the identifier for this request.
*
* @return Identifier used to identify this request. This identifier must be
* the value of the {@link Response#getInReplyTo()} field of a
* {@link Response} send for this request.
*/
String getReplyWith() {
return this.replyWith;
}
@Override
public String toString() {
return super.toString();
}
}