package org.basex.server; import static org.basex.core.Text.*; import java.util.concurrent.CopyOnWriteArrayList; import org.basex.util.TokenBuilder; import org.basex.util.list.StringList; /** * This class organizes all currently opened database sessions. * * @author BaseX Team 2005-12, BSD License * @author Christian Gruen */ public final class Sessions extends CopyOnWriteArrayList<ClientListener> { /** * Returns information about the currently opened sessions. * @return data reference */ public synchronized String info() { final TokenBuilder tb = new TokenBuilder(); tb.addExt(SESSIONS_X, size()).add(size() != 0 ? COL : DOT); final StringList sl = new StringList(); for(final ClientListener sp : this) { sl.add(sp.context().user.name + ' ' + sp); } sl.sort(true, true); for(final String sp : sl) tb.add(NL).add(LI).add(sp); return tb.toString(); } }