Commit 4d2dcdb9 authored by Gaston Dombiak's avatar Gaston Dombiak Committed by gato

Modified #getSessionCount() to use AtomicInteger. JM-720

git-svn-id: http://svn.igniterealtime.org/svn/repos/wildfire/trunk@4021 b35dd754-fafc-0310-a699-88a17e54d16e
parent 997afc80
...@@ -38,6 +38,7 @@ import org.xmpp.packet.Presence; ...@@ -38,6 +38,7 @@ import org.xmpp.packet.Presence;
import java.util.*; import java.util.*;
import java.util.concurrent.ConcurrentHashMap; import java.util.concurrent.ConcurrentHashMap;
import java.util.concurrent.CopyOnWriteArrayList; import java.util.concurrent.CopyOnWriteArrayList;
import java.util.concurrent.atomic.AtomicInteger;
/** /**
* Manages the sessions associated with an account. The information * Manages the sessions associated with an account. The information
...@@ -57,6 +58,12 @@ public class SessionManager extends BasicModule { ...@@ -57,6 +58,12 @@ public class SessionManager extends BasicModule {
private UserManager userManager; private UserManager userManager;
private int conflictLimit; private int conflictLimit;
/**
* Counter of user sessions. A session is counted just after it was created and not
* after the user came available.
*/
private final AtomicInteger usersSessionsCounter = new AtomicInteger(0);
private ClientSessionListener clientSessionListener = new ClientSessionListener(); private ClientSessionListener clientSessionListener = new ClientSessionListener();
private ComponentSessionListener componentSessionListener = new ComponentSessionListener(); private ComponentSessionListener componentSessionListener = new ComponentSessionListener();
private IncomingServerSessionListener incomingServerListener = new IncomingServerSessionListener(); private IncomingServerSessionListener incomingServerListener = new IncomingServerSessionListener();
...@@ -511,6 +518,8 @@ public class SessionManager extends BasicModule { ...@@ -511,6 +518,8 @@ public class SessionManager extends BasicModule {
// Add to pre-authenticated sessions. // Add to pre-authenticated sessions.
preAuthenticatedSessions.put(session.getAddress().getResource(), session); preAuthenticatedSessions.put(session.getAddress().getResource(), session);
// Increment the counter of user sessions
usersSessionsCounter.incrementAndGet();
return session; return session;
} }
...@@ -1199,12 +1208,7 @@ public class SessionManager extends BasicModule { ...@@ -1199,12 +1208,7 @@ public class SessionManager extends BasicModule {
* @return number of client sessions that are connected to the server. * @return number of client sessions that are connected to the server.
*/ */
public int getSessionCount() { public int getSessionCount() {
int sessionCount = 0; return usersSessionsCounter.get();
for (String username : getSessionUsers()) {
sessionCount += getSessionCount(username);
}
sessionCount += anonymousSessions.size();
return sessionCount;
} }
/** /**
...@@ -1420,6 +1424,8 @@ public class SessionManager extends BasicModule { ...@@ -1420,6 +1424,8 @@ public class SessionManager extends BasicModule {
finally { finally {
// Remove the session // Remove the session
removeSession(session); removeSession(session);
// Decrement the counter of user sessions
usersSessionsCounter.decrementAndGet();
} }
} }
catch (Exception e) { catch (Exception e) {
......
Markdown is supported
0% or
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment