package sockslib.server; import sockslib.server.listener.CloseSessionException; import sockslib.server.listener.CommandListener; import sockslib.server.listener.ExceptionListener; import sockslib.server.listener.SessionCloseListener; import sockslib.server.listener.SessionCreateListener; import sockslib.server.listener.SessionListener; import sockslib.server.msg.CommandMessage; import java.net.Socket; import java.util.Map; /** * The interface <code>SessionManager</code> represents a session manager. * * @author Youchao Feng * @version 1.0 * @date Sep 30, 2015 12:36 PM */ public interface SessionManager { /** * Create a new {@link Session}. * * @param socket socket. * @return session. */ Session newSession(Socket socket); /** * Returns the session by giving a id. * * @param id id of session. * @return session. */ Session getSession(long id); void sessionOnCreate(Session session) throws CloseSessionException; void sessionOnCommand(Session session, CommandMessage message) throws CloseSessionException; void sessionOnException(Session session, Exception exception); void sessionOnClose(Session session); /** * Remove a {@link SessionListener} by name. * * @param name name of {@link SessionListener}. */ void removeSessionListener(String name); /** * Add a {@link SessionListener}. * * @param name name of {@link SessionListener}. * @param listener instance of {@link SessionListener}. */ void addSessionListener(String name, SessionListener listener); /** * Returns all managed sessions. * * @return all managed sessions. */ Map<Long, Session> getManagedSessions(); SessionManager onSessionClose(String name, SessionCloseListener listener); SessionManager onSessionCreate(String name, SessionCreateListener listener); SessionManager onCommand(String name, CommandListener listener); SessionManager onException(String name, ExceptionListener listener); }