?? session.java
字號:
// Copyright (c) 2000 Just Objects B.V. <just@justobjects.nl>// Distributable under LGPL license. See terms of license at gnu.org.package nl.justobjects.pushlet.core;import nl.justobjects.pushlet.util.Log;import nl.justobjects.pushlet.util.PushletException;/** * Represents client pushlet session state. * * @author Just van den Broecke - Just Objects © * @version $Id: Session.java,v 1.8 2007/11/23 14:33:07 justb Exp $ */public class Session implements Protocol, ConfigDefs { private Controller controller; private Subscriber subscriber; private String userAgent; private long LEASE_TIME_MILLIS = Config.getLongProperty(SESSION_TIMEOUT_MINS) * 60 * 1000; private volatile long timeToLive = LEASE_TIME_MILLIS; public static String[] FORCED_PULL_AGENTS = Config.getProperty(LISTEN_FORCE_PULL_AGENTS).split(","); private String address = "unknown"; private String format = FORMAT_XML; private String id; /** * Protected constructor as we create through factory method. */ protected Session() { } /** * Create instance through factory method. * * @param anId a session id * @return a Session object (or derived) * @throws PushletException exception, usually misconfiguration */ public static Session create(String anId) throws PushletException { Session session; try { session = (Session) Config.getClass(SESSION_CLASS, "nl.justobjects.pushlet.core.Session").newInstance(); } catch (Throwable t) { throw new PushletException("Cannot instantiate Session from config", t); } // Init session session.id = anId; session.controller = Controller.create(session); session.subscriber = Subscriber.create(session); return session; } /** * Return (remote) Subscriber client's IP address. */ public String getAddress() { return address; } /** * Return command controller. */ public Controller getController() { return controller; } /** * Return Event format to send to client. */ public String getFormat() { return format; } /** * Return (remote) Subscriber client's unique id. */ public String getId() { return id; } /** * Return subscriber. */ public Subscriber getSubscriber() { return subscriber; } /** * Return remote HTTP User-Agent. */ public String getUserAgent() { return userAgent; } /** * Set address. */ protected void setAddress(String anAddress) { address = anAddress; } /** * Set event format to encode. */ protected void setFormat(String aFormat) { format = aFormat; } /** * Set client HTTP UserAgent. */ public void setUserAgent(String aUserAgent) { userAgent = aUserAgent; } /** * Decrease time to live. */ public void age(long aDeltaMillis) { timeToLive -= aDeltaMillis; } /** * Has session timed out? */ public boolean isExpired() { return timeToLive <= 0; } /** * Keep alive by resetting TTL. */ public void kick() { timeToLive = LEASE_TIME_MILLIS; } public void start() { SessionManager.getInstance().addSession(this); } public void stop() { subscriber.stop(); SessionManager.getInstance().removeSession(this); } /** * Info. */ public void info(String s) { Log.info("S-" + this + ": " + s); } /** * Exceptional print util. */ public void warn(String s) { Log.warn("S-" + this + ": " + s); } /** * Exceptional print util. */ public void debug(String s) { Log.debug("S-" + this + ": " + s); } public String toString() { return getAddress() + "[" + getId() + "]"; }}/* * $Log: Session.java,v $ * Revision 1.8 2007/11/23 14:33:07 justb * core classes now configurable through factory * * Revision 1.7 2005/02/28 15:58:05 justb * added SimpleListener example * * Revision 1.6 2005/02/28 12:45:59 justb * introduced Command class * * Revision 1.5 2005/02/28 09:14:55 justb * sessmgr/dispatcher factory/singleton support * * Revision 1.4 2005/02/25 15:13:01 justb * session id generation more robust * * Revision 1.3 2005/02/21 16:59:08 justb * SessionManager and session lease introduced * * Revision 1.2 2005/02/21 12:32:28 justb * fixed publish event in Controller * * Revision 1.1 2005/02/21 11:50:46 justb * ohase1 of refactoring Subscriber into Session/Controller/Subscriber * * */
?? 快捷鍵說明
復(fù)制代碼
Ctrl + C
搜索代碼
Ctrl + F
全屏模式
F11
切換主題
Ctrl + Shift + D
顯示快捷鍵
?
增大字號
Ctrl + =
減小字號
Ctrl + -