package org.mailster.smtp.core;
/**
* Describes the state of an SMTP session.
*
* @author Edouard De Oliveira <doe_wanted@yahoo.fr>
* @author Ian McFarland <ian@neo.com>
* @author Jon Stevens
* @author Jeff Schnitzer
*/
public class SMTPState
{
private boolean authenticating = false;
private boolean authenticated = false;
private boolean dataMode = false;
private boolean hasSeenHelo = false;
private boolean active = true;
private boolean hasSender = false;
private int recipientCount = 0;
public SMTPState()
{
}
public boolean isActive()
{
return this.active;
}
public void quit()
{
this.active = false;
}
public boolean getHasSender()
{
return this.hasSender;
}
public void setHasSender(boolean value)
{
this.hasSender = value;
}
public boolean getHasSeenHelo()
{
return this.hasSeenHelo;
}
public void setHasSeenHelo(boolean hasSeenHelo)
{
this.hasSeenHelo = hasSeenHelo;
}
public boolean isDataMode()
{
return this.dataMode;
}
public void setDataMode(boolean dataMode)
{
this.dataMode = dataMode;
}
public void addRecipient()
{
this.recipientCount++;
}
public int getRecipientCount()
{
return this.recipientCount;
}
public boolean isAuthenticated()
{
return authenticated;
}
public void setAuthenticated(boolean authenticated)
{
this.authenticated = authenticated;
}
public boolean isAuthenticating()
{
return authenticating;
}
public void setAuthenticating(boolean authenticating)
{
this.authenticating = authenticating;
}
/**
* Executes a full reset() of the session
* which requires a new HELO command to be sent
*/
public void resetAll()
{
reset(false);
setAuthenticated(false);
}
/**
* Reset session, but don't require new HELO/EHLO
*/
public void reset()
{
reset(true);
}
private void reset(boolean hasSeenHelo)
{
this.hasSender = false;
this.dataMode = false;
this.active = true;
this.hasSeenHelo = hasSeenHelo;
this.recipientCount = 0;
}
}