panda.net.ProtocolCommandEvent Maven / Gradle / Ivy
Go to download
Show more of this group Show more artifacts with this name
Show all versions of panda-core Show documentation
Show all versions of panda-core Show documentation
Panda Core is the core module of Panda Framework, it contains commonly used utility classes similar to apache-commons.
package panda.net;
import java.util.EventObject;
/***
* There exists a large class of IETF protocols that work by sending an ASCII text command and
* arguments to a server, and then receiving an ASCII text reply. For debugging and other purposes,
* it is extremely useful to log or keep track of the contents of the protocol messages. The
* ProtocolCommandEvent class coupled with the {@link panda.net.ProtocolCommandListener} interface
* facilitate this process.
*
* @see ProtocolCommandListener
* @see ProtocolCommandSupport
***/
public class ProtocolCommandEvent extends EventObject {
private static final long serialVersionUID = 403743538418947240L;
private final int __replyCode;
private final boolean __isCommand;
private final String __message, __command;
/***
* Creates a ProtocolCommandEvent signalling a command was sent to the server.
* ProtocolCommandEvents created with this constructor should only be sent after a command has
* been sent, but before the reply has been received.
*
* @param source The source of the event.
* @param command The string representation of the command type sent, not including the
* arguments (e.g., "STAT" or "GET").
* @param message The entire command string verbatim as sent to the server, including all
* arguments.
***/
public ProtocolCommandEvent(Object source, String command, String message) {
super(source);
__replyCode = 0;
__message = message;
__isCommand = true;
__command = command;
}
/***
* Creates a ProtocolCommandEvent signalling a reply to a command was received.
* ProtocolCommandEvents created with this constructor should only be sent after a complete
* command reply has been received fromt a server.
*
* @param source The source of the event.
* @param replyCode The integer code indicating the natureof the reply. This will be the
* protocol integer value for protocols that use integer reply codes, or the reply
* class constant corresponding to the reply for protocols like POP3 that use strings
* like OK rather than integer codes (i.e., POP3Repy.OK).
* @param message The entire reply as received from the server.
***/
public ProtocolCommandEvent(Object source, int replyCode, String message) {
super(source);
__replyCode = replyCode;
__message = message;
__isCommand = false;
__command = null;
}
/***
* Returns the string representation of the command type sent (e.g., "STAT" or "GET"). If the
* ProtocolCommandEvent is a reply event, then null is returned.
*
* @return The string representation of the command type sent, or null if this is a reply event.
***/
public String getCommand() {
return __command;
}
/***
* Returns the reply code of the received server reply. Undefined if this is not a reply event.
*
* @return The reply code of the received server reply. Undefined if not a reply event.
***/
public int getReplyCode() {
return __replyCode;
}
/***
* Returns true if the ProtocolCommandEvent was generated as a result of sending a command.
*
* @return true If the ProtocolCommandEvent was generated as a result of sending a command.
* False otherwise.
***/
public boolean isCommand() {
return __isCommand;
}
/***
* Returns true if the ProtocolCommandEvent was generated as a result of receiving a reply.
*
* @return true If the ProtocolCommandEvent was generated as a result of receiving a reply.
* False otherwise.
***/
public boolean isReply() {
return !isCommand();
}
/***
* Returns the entire message sent to or received from the server. Includes the line terminator.
*
* @return The entire message sent to or received from the server.
***/
public String getMessage() {
return __message;
}
}