You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by ng...@apache.org on 2008/04/30 14:11:24 UTC

svn commit: r652354 - in /mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener: Listener.java mina/MinaListener.java

Author: ngn
Date: Wed Apr 30 05:11:24 2008
New Revision: 652354

URL: http://svn.apache.org/viewvc?rev=652354&view=rev
Log:
Adding support for retriving the active sessions for a Listener

Modified:
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/Listener.java
    mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/Listener.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/Listener.java?rev=652354&r1=652353&r2=652354&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/Listener.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/Listener.java Wed Apr 30 05:11:24 2008
@@ -19,14 +19,17 @@
 
 package org.apache.ftpserver.listener;
 
+import java.util.Set;
+
 import org.apache.ftpserver.interfaces.DataConnectionConfig;
+import org.apache.ftpserver.interfaces.FtpIoSession;
 import org.apache.ftpserver.interfaces.FtpServerContext;
 import org.apache.ftpserver.ssl.SslConfiguration;
 
 
 /**
  * Interface for the component responsible for waiting for incoming
- * socket requests and kicking off {@link Connection}s 
+ * socket requests and kicking off {@link FtpIoSession}s 
  *
  */
 public interface Listener {
@@ -79,4 +82,11 @@
      * @return True if the listener is suspended
      */
     boolean isSuspended();
+    
+    /**
+     * Returns the currently active sessions for this listener.
+     * If no sessions are active, an empty {@link Set} would be returned.
+     * @return The currently active sessions
+     */
+    Set<FtpIoSession> getActiveSessions();
 }
\ No newline at end of file

Modified: mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java
URL: http://svn.apache.org/viewvc/mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java?rev=652354&r1=652353&r2=652354&view=diff
==============================================================================
--- mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java (original)
+++ mina/ftpserver/trunk/core/src/main/java/org/apache/ftpserver/listener/mina/MinaListener.java Wed Apr 30 05:11:24 2008
@@ -23,19 +23,23 @@
 import java.net.InetAddress;
 import java.net.InetSocketAddress;
 import java.util.ArrayList;
+import java.util.HashSet;
 import java.util.List;
+import java.util.Set;
 import java.util.concurrent.ExecutorService;
 import java.util.concurrent.TimeUnit;
 
 import org.apache.ftpserver.DefaultFtpHandler;
 import org.apache.ftpserver.FtpHandler;
 import org.apache.ftpserver.filter.FtpLoggingFilter;
+import org.apache.ftpserver.interfaces.FtpIoSession;
 import org.apache.ftpserver.interfaces.FtpServerContext;
 import org.apache.ftpserver.listener.AbstractListener;
 import org.apache.ftpserver.listener.Listener;
 import org.apache.ftpserver.ssl.ClientAuth;
 import org.apache.ftpserver.ssl.SslConfiguration;
 import org.apache.mina.common.IdleStatus;
+import org.apache.mina.common.IoSession;
 import org.apache.mina.filter.codec.ProtocolCodecFilter;
 import org.apache.mina.filter.executor.ExecutorFilter;
 import org.apache.mina.filter.executor.OrderedThreadPoolExecutor;
@@ -72,6 +76,8 @@
 	private List<InetAddress> blockedAddresses;
 	private List<Subnet> blockedSubnets;
 
+    private FtpServerContext context;
+
 
 	public int getIdleTimeout() {
 		return idleTimeout;
@@ -103,6 +109,8 @@
      * @see Listener#start(FtpServerContext)
      */
     public void start(FtpServerContext context) throws Exception {
+        this.context = context;
+        
         
         acceptor = new NioSocketAcceptor(Runtime.getRuntime().availableProcessors());
         
@@ -281,4 +289,17 @@
         this.blockedSubnets = blockedSubnets;
         updateBlacklistFilter();
     }
+
+    /**
+     * @see Listener#getActiveSessions()
+     */
+    public Set<FtpIoSession> getActiveSessions() {
+        Set<IoSession> sessions = acceptor.getManagedSessions();
+        
+        Set<FtpIoSession> ftpSessions = new HashSet<FtpIoSession>();
+        for(IoSession session : sessions) {
+            ftpSessions.add(new FtpIoSession(session, context));
+        }
+        return ftpSessions;
+    }
 }
\ No newline at end of file