/**
* Copyright (c) 2006 jDiameter.
* https://jdiameter.dev.java.net/
*
* License: Lesser General Public License (LGPL)
*
* e-mail: erick.svenson@yahoo.com
*
*/
package org.jdiameter.api.app;
import org.jdiameter.api.ApplicationId;
import org.jdiameter.api.Session;
import java.io.Serializable;
import java.util.List;
/**
* Basic class for application specific session (Sx, Rx, Gx)
* @version 1.5.1 Final
*/
public interface AppSession extends Serializable {
/**
* Returns the time when this session was created (milliseconds)
* Start point of time January 1, 1970 GMT.
* @return long specifying when this session was created
*/
long getCreationTime();
/**
* Returns the last time an event occurred on this session (milliseconds)
* Start point of time January 1, 1970 GMT.
* @return long specifying when last time an event occurred on this session
*/
long getLastAccessedTime();
/**
* Return true if session has stateless fsm
* @return true if session has stateless fsm
*/
boolean isStateless();
/**
* Return true if session has valid state (for example it retur true if session did not have timeout)
* @return true if session has valid state
*/
boolean isValid();
/**
* Return current value of applicationId of application session.
* @return applicationId of application session.
*/
ApplicationId getSessionAppId();
/**
* @return Set of child delivery sessions
*/
List<Session> getSessions();
/**
* Release all attachment resources
*/
void release();
}