Make a note of when we started our session and when we most recently
connected or disconnected. Use this to determine if a client has "expired" (meaning they've been disconnected for too long). git-svn-id: svn+ssh://src.earth.threerings.net/narya/trunk@1871 542714f4-19e9-0310-aa3c-eee0fc999fb1
This commit is contained in:
@@ -1,5 +1,5 @@
|
|||||||
//
|
//
|
||||||
// $Id: PresentsClient.java,v 1.42 2002/10/26 02:40:30 shaper Exp $
|
// $Id: PresentsClient.java,v 1.43 2002/10/31 21:03:57 mdb Exp $
|
||||||
|
|
||||||
package com.threerings.presents.server;
|
package com.threerings.presents.server;
|
||||||
|
|
||||||
@@ -81,6 +81,33 @@ public class PresentsClient
|
|||||||
return _creds;
|
return _creds;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns true if this client has been disconnected for sufficiently
|
||||||
|
* long that its session should be forcibly ended.
|
||||||
|
*/
|
||||||
|
public boolean checkExpired (long now)
|
||||||
|
{
|
||||||
|
return (getConnection() == null && (now - _networkStamp > FLUSH_TIME));
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the time at which this client started their network
|
||||||
|
* session.
|
||||||
|
*/
|
||||||
|
public long getSessionStamp ()
|
||||||
|
{
|
||||||
|
return _sessionStamp;
|
||||||
|
}
|
||||||
|
|
||||||
|
/**
|
||||||
|
* Returns the time at which this client most recently connected or
|
||||||
|
* disconnected.
|
||||||
|
*/
|
||||||
|
public long getNetworkStamp ()
|
||||||
|
{
|
||||||
|
return _networkStamp;
|
||||||
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
* Returns the username with which this client instance is associated.
|
* Returns the username with which this client instance is associated.
|
||||||
*/
|
*/
|
||||||
@@ -213,6 +240,9 @@ public class PresentsClient
|
|||||||
|
|
||||||
// resolve our client object before we get fully underway
|
// resolve our client object before we get fully underway
|
||||||
cmgr.resolveClientObject(_username, this);
|
cmgr.resolveClientObject(_username, this);
|
||||||
|
|
||||||
|
// make a note of our session start time
|
||||||
|
_sessionStamp = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -527,6 +557,9 @@ public class PresentsClient
|
|||||||
if (_conn != null) {
|
if (_conn != null) {
|
||||||
_conn.setMessageHandler(this);
|
_conn.setMessageHandler(this);
|
||||||
}
|
}
|
||||||
|
|
||||||
|
// make a note that our network status changed
|
||||||
|
_networkStamp = System.currentTimeMillis();
|
||||||
}
|
}
|
||||||
|
|
||||||
/**
|
/**
|
||||||
@@ -740,6 +773,17 @@ public class PresentsClient
|
|||||||
|
|
||||||
protected static HashMap _disps = new HashMap();
|
protected static HashMap _disps = new HashMap();
|
||||||
|
|
||||||
|
/** The time at which this client started their session. */
|
||||||
|
protected long _sessionStamp;
|
||||||
|
|
||||||
|
/** The time at which this client most recently connected or
|
||||||
|
* disconnected. */
|
||||||
|
protected long _networkStamp;
|
||||||
|
|
||||||
|
/** The amount of time after disconnection a user is allowed before
|
||||||
|
* their session is forcibly ended. */
|
||||||
|
protected static final long FLUSH_TIME = 7 * 60 * 1000L;
|
||||||
|
|
||||||
// register our message dispatchers
|
// register our message dispatchers
|
||||||
static {
|
static {
|
||||||
_disps.put(SubscribeRequest.class, new SubscribeDispatcher());
|
_disps.put(SubscribeRequest.class, new SubscribeDispatcher());
|
||||||
|
|||||||
Reference in New Issue
Block a user