diff --git a/src/java/com/threerings/presents/data/ConMgrStats.java b/src/java/com/threerings/presents/data/ConMgrStats.java
index 5d2398fbb..0b993bb96 100644
--- a/src/java/com/threerings/presents/data/ConMgrStats.java
+++ b/src/java/com/threerings/presents/data/ConMgrStats.java
@@ -1,5 +1,5 @@
//
-// $Id: ConMgrStats.java,v 1.1 2004/08/04 02:31:18 mdb Exp $
+// $Id: ConMgrStats.java,v 1.2 2004/08/04 02:36:56 mdb Exp $
package com.threerings.presents.data;
@@ -13,6 +13,12 @@ public class ConMgrStats implements Streamable
/** The current index into the history arrays. */
public int current;
+ /** The size of the queue of waiting to auth sockets. */
+ public int[] authQueueSize;
+
+ /** The size of the queue of waiting to die sockets. */
+ public int[] deathQueueSize;
+
/** The outgoing queue size. */
public int[] outQueueSize;
@@ -36,6 +42,8 @@ public class ConMgrStats implements Streamable
public void increment ()
{
current++;
+ authQueueSize[current] = 0;
+ deathQueueSize[current] = 0;
outQueueSize[current] = 0;
overQueueSize[current] = 0;
bytesIn[current] = 0;
diff --git a/src/java/com/threerings/presents/server/net/ConnectionManager.java b/src/java/com/threerings/presents/server/net/ConnectionManager.java
index 17a3247ea..d919bba79 100644
--- a/src/java/com/threerings/presents/server/net/ConnectionManager.java
+++ b/src/java/com/threerings/presents/server/net/ConnectionManager.java
@@ -1,5 +1,5 @@
//
-// $Id: ConnectionManager.java,v 1.40 2004/08/04 02:31:18 mdb Exp $
+// $Id: ConnectionManager.java,v 1.41 2004/08/04 02:36:56 mdb Exp $
package com.threerings.presents.server.net;
@@ -102,9 +102,23 @@ public class ConnectionManager extends LoopingThread
/**
* Returns our current runtime statistics. When the stats are fetched
* the counters are rolled to the next bucket. 60 buckets are tracked.
+ * Note: don't call this method too frequently (more
+ * often than once every few seconds or so) as it has to total things
+ * up and run a number of synchronized methods.
*/
public synchronized ConMgrStats getStats ()
{
+ // fill in our snapshot values
+ _stats.authQueueSize[_stats.current] = _authq.size();
+ _stats.deathQueueSize[_stats.current] = _deathq.size();
+ _stats.outQueueSize[_stats.current] = _outq.size();
+ if (_oflowqs.size() > 0) {
+ Iterator oqiter = _oflowqs.values().iterator();
+ while (oqiter.hasNext()) {
+ OverflowQueue oq = (OverflowQueue)oqiter.next();
+ _stats.overQueueSize[_stats.current] += oq.size();
+ }
+ }
_stats.increment();
return _stats;
}