Skip to main content
aboutsummaryrefslogtreecommitdiffstats
diff options
context:
space:
mode:
Diffstat (limited to 'plugins/org.eclipse.net4j.jms.server/src/org/eclipse/net4j/jms/internal/server/ServerConnection.java')
-rw-r--r--plugins/org.eclipse.net4j.jms.server/src/org/eclipse/net4j/jms/internal/server/ServerConnection.java117
1 files changed, 117 insertions, 0 deletions
diff --git a/plugins/org.eclipse.net4j.jms.server/src/org/eclipse/net4j/jms/internal/server/ServerConnection.java b/plugins/org.eclipse.net4j.jms.server/src/org/eclipse/net4j/jms/internal/server/ServerConnection.java
new file mode 100644
index 0000000000..77c0ab0598
--- /dev/null
+++ b/plugins/org.eclipse.net4j.jms.server/src/org/eclipse/net4j/jms/internal/server/ServerConnection.java
@@ -0,0 +1,117 @@
+/***************************************************************************
+ * Copyright (c) 2004 - 2007 Eike Stepper, Germany.
+ * All rights reserved. This program and the accompanying materials
+ * are made available under the terms of the Eclipse Public License v1.0
+ * which accompanies this distribution, and is available at
+ * http://www.eclipse.org/legal/epl-v10.html
+ *
+ * Contributors:
+ * Eike Stepper - initial API and implementation
+ **************************************************************************/
+package org.eclipse.net4j.jms.internal.server;
+
+import org.eclipse.net4j.jms.internal.server.protocol.JMSServerProtocol;
+import org.eclipse.net4j.jms.server.IConnection;
+
+import java.util.ArrayList;
+import java.util.List;
+
+/**
+ * @author Eike Stepper
+ */
+public class ServerConnection implements IConnection
+{
+ private Server server;
+
+ private String userName;
+
+ private List<ServerSession> sessions = new ArrayList(0);
+
+ private JMSServerProtocol protocol;
+
+ public ServerConnection(Server server, String userName)
+ {
+ this.server = server;
+ this.userName = userName;
+ }
+
+ public Server getServer()
+ {
+ return server;
+ }
+
+ public String getUserName()
+ {
+ return userName;
+ }
+
+ public JMSServerProtocol getProtocol()
+ {
+ return protocol;
+ }
+
+ public void setProtocol(JMSServerProtocol protocol)
+ {
+ this.protocol = protocol;
+ }
+
+ public ServerSession openSession(int sessionID)
+ {
+ ServerSession session = new ServerSession(this, sessionID);
+ synchronized (sessions)
+ {
+ while (sessionID >= sessions.size())
+ {
+ sessions.add(null);
+ }
+
+ sessions.set(sessionID, session);
+ }
+
+ return session;
+ }
+
+ public ServerSession getSession(int sessionID)
+ {
+ return sessions.get(sessionID);
+ }
+
+ public ServerSession[] getSessions()
+ {
+ List<ServerSession> result = new ArrayList(sessions.size());
+ synchronized (sessions)
+ {
+ for (ServerSession session : sessions)
+ {
+ if (session != null)
+ {
+ result.add(session);
+ }
+ }
+ }
+
+ return result.toArray(new ServerSession[result.size()]);
+ }
+
+ public void close()
+ {
+ protocol.getChannel().close();
+ }
+
+ protected boolean removeSession(ServerSession session)
+ {
+ synchronized (sessions)
+ {
+ int sessionID = session.getID();
+ if (sessions.get(sessionID) == session)
+ {
+ sessions.set(sessionID, null);
+ return true;
+ }
+ else
+ {
+ return false;
+ }
+ }
+ }
+}

Back to the top