package com.netifera.platform.api.dispatcher;
import java.io.Serializable;
/**
* Base class for all messages exchanged with probes.
*/
public class ProbeMessage implements Serializable, IProbeMessage {
private static final long serialVersionUID = -1746870501140453759L;
/**
* The sequence number for this message. Used to match responses with
* initial messages.
*/
private int sequenceNumber;
/**
* This flag is set in response messages.
*/
private boolean sequenceNumberSet;
/**
* This message is a response message
*/
private boolean isResponseBool;
/**
* Named type of message for dispatching.
*/
private final String namedType;
/**
* Create new ProbeMessage with the specified name.
* @param namedType Named type of message for dispatching.
*/
protected ProbeMessage(final String namedType) {
this.namedType = namedType;
}
/**
* Sets the sequence number for this message. Sequence numbers are used
* to match response messages to the initial message which generated them.
* @param value Sequence number value.
*/
public void setSequenceNumber(final int value) {
sequenceNumber = value;
sequenceNumberSet = true;
}
public int getSequenceNumber() {
return sequenceNumber;
}
/**
* Has a sequence number been set yet for this message? The Messenger
* uses this method to know if it needs to generate and add a sequence
* number before transmitting the message.
*/
public boolean isSequenceNumberSet() {
return sequenceNumberSet;
}
public boolean isResponse() {
return isResponseBool;
}
protected void markAsResponse() {
isResponseBool = true;
}
public void markAsNotResponse() {
isResponseBool = false;
}
public String getNamedType() {
return namedType;
}
@Override
public String toString() {
return getNamedType();
}
/**
* Convenience method for creating a 'Ok' {@link StatusMessage} response
* from this message.
* @return The response message
* @see StatusMessage
*/
// public StatusMessage createResponseOk() {
// return StatusMessage.createOk(sequenceNumber);
// }
/**
* Convenience method for creating an error {@link StatusMessage} response
* from this message
* @param errorMessage Error string to set in response message.
* @return The response message.
* @see StatusMessage
*/
// public StatusMessage createResponseError(String errorMessage) {
// return StatusMessage.createError(sequenceNumber, errorMessage);
// }
}