package net.sf.colossus.server;
import net.sf.colossus.common.Constants;
/**
* Encapsulates one message that was sent to client, together with the
* last commitNumber and the message number (relative to the commit).
*/
class MessageForClient
{
private static int MAX_PRINT_LEN = 100;
private final int messageNumber;
private final int commitNumber;
private final String message;
private final String method;
public MessageForClient(int messageNr, int commitNr, String message)
{
this.messageNumber = messageNr;
this.commitNumber = commitNr;
this.message = message;
int i = message.indexOf(Constants.protocolTermSeparator);
if (i == -1)
{
this.method = message;
}
else
{
this.method = message.substring(0, i);
}
}
/** Clone from another message in queue, but rewrite the message
* number because in re-sending they are different.
* @param original The original MessageForClient to clone from
* @param newMsgNumber the MessageNumber to used instead
*/
public MessageForClient(MessageForClient original, int newMsgNumber)
{
this.messageNumber = newMsgNumber;
this.commitNumber = original.commitNumber;
this.message = original.message;
this.method = original.method;
}
public int getMessageNr()
{
return messageNumber;
}
public int getCommitNumber()
{
return commitNumber;
}
public String getMessage()
{
return message;
}
public String getShortenedMessage()
{
String shortMessage;
if (message.length() < MAX_PRINT_LEN)
{
shortMessage = message;
}
else
{
shortMessage = message.substring(0, MAX_PRINT_LEN);
}
return shortMessage;
}
public String getMethod()
{
return method;
}
}