You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by lg...@apache.org on 2018/08/05 16:31:20 UTC

[3/4] mina-sshd git commit: [SSHD-838] Added IoServiceEventListener support to MINA I/O service factory

[SSHD-838] Added IoServiceEventListener support to MINA I/O service factory


Project: http://git-wip-us.apache.org/repos/asf/mina-sshd/repo
Commit: http://git-wip-us.apache.org/repos/asf/mina-sshd/commit/14ad9440
Tree: http://git-wip-us.apache.org/repos/asf/mina-sshd/tree/14ad9440
Diff: http://git-wip-us.apache.org/repos/asf/mina-sshd/diff/14ad9440

Branch: refs/heads/master
Commit: 14ad9440039dec60f7f35c6b322fca9cd4d783e9
Parents: f6e637f
Author: Goldstein Lyor <ly...@c-b4.com>
Authored: Sun Aug 5 15:47:56 2018 +0300
Committer: Lyor Goldstein <ly...@gmail.com>
Committed: Sun Aug 5 19:35:53 2018 +0300

----------------------------------------------------------------------
 .../sshd/common/io/mina/MinaAcceptor.java       | 33 ++++++++++++++++++++
 .../sshd/common/io/mina/MinaConnector.java      | 32 +++++++++++++++++++
 .../apache/sshd/common/io/mina/MinaService.java |  2 +-
 3 files changed, 66 insertions(+), 1 deletion(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/14ad9440/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
----------------------------------------------------------------------
diff --git a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
index 5f540e6..8c38132 100644
--- a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
+++ b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaAcceptor.java
@@ -28,9 +28,11 @@ import org.apache.mina.core.service.IoAcceptor;
 import org.apache.mina.core.service.IoHandler;
 import org.apache.mina.core.service.IoProcessor;
 import org.apache.mina.core.service.IoService;
+import org.apache.mina.core.session.IoSession;
 import org.apache.mina.transport.socket.nio.NioSession;
 import org.apache.mina.transport.socket.nio.NioSocketAcceptor;
 import org.apache.sshd.common.FactoryManager;
+import org.apache.sshd.common.io.IoServiceEventListener;
 
 /**
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
@@ -76,6 +78,37 @@ public class MinaAcceptor extends MinaService implements org.apache.sshd.common.
     }
 
     @Override
+    public void sessionCreated(IoSession session) throws Exception {
+        IoServiceEventListener listener = getIoServiceEventListener();
+        SocketAddress local = session.getLocalAddress();
+        SocketAddress remote = session.getRemoteAddress();
+        try {
+            if (listener != null) {
+                try {
+                    listener.connectionAccepted(this, local, remote);
+                } catch (Exception e) {
+                    session.closeNow();
+                    throw e;
+                }
+            }
+
+            super.sessionCreated(session);
+        } catch (Exception e) {
+            if (listener != null) {
+                try {
+                    listener.abortAcceptedConnection(this, local, remote, e);
+                } catch (Exception exc) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
+                    }
+                }
+            }
+
+            throw e;
+        }
+    }
+
+    @Override
     protected IoService getIoService() {
         return getAcceptor();
     }

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/14ad9440/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
----------------------------------------------------------------------
diff --git a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
index 22e85cc..e7229ec 100644
--- a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
+++ b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaConnector.java
@@ -32,6 +32,7 @@ import org.apache.mina.transport.socket.nio.NioSocketConnector;
 import org.apache.sshd.common.FactoryManager;
 import org.apache.sshd.common.future.DefaultSshFuture;
 import org.apache.sshd.common.io.IoConnectFuture;
+import org.apache.sshd.common.io.IoServiceEventListener;
 
 /**
  * @author <a href="mailto:dev@mina.apache.org">Apache MINA SSHD Project</a>
@@ -74,6 +75,37 @@ public class MinaConnector extends MinaService implements org.apache.sshd.common
     }
 
     @Override
+    public void sessionCreated(IoSession session) throws Exception {
+        IoServiceEventListener listener = getIoServiceEventListener();
+        SocketAddress local = session.getLocalAddress();
+        SocketAddress remote = session.getRemoteAddress();
+        try {
+            if (listener != null) {
+                try {
+                    listener.connectionEstablished(this, local, remote);
+                } catch (Exception e) {
+                    session.closeNow();
+                    throw e;
+                }
+            }
+
+            super.sessionCreated(session);
+        } catch (Exception e) {
+            if (listener != null) {
+                try {
+                    listener.abortEstablishedConnection(this, local, remote, e);
+                } catch (Exception exc) {
+                    if (log.isDebugEnabled()) {
+                        log.debug("sessionCreated(" + session + ") listener=" + listener + " ignoring abort event exception", exc);
+                    }
+                }
+            }
+
+            throw e;
+        }
+    }
+
+    @Override
     public IoConnectFuture connect(SocketAddress address, SocketAddress localAddress) {
         class Future extends DefaultSshFuture<IoConnectFuture> implements IoConnectFuture {
             Future(Object lock) {

http://git-wip-us.apache.org/repos/asf/mina-sshd/blob/14ad9440/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
----------------------------------------------------------------------
diff --git a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaService.java b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
index c183795..b6edacf 100644
--- a/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
+++ b/sshd-mina/src/main/java/org/apache/sshd/common/io/mina/MinaService.java
@@ -51,7 +51,7 @@ public abstract class MinaService extends AbstractCloseable implements org.apach
 
     private IoServiceEventListener eventListener;
 
-    public MinaService(FactoryManager manager, org.apache.sshd.common.io.IoHandler handler, IoProcessor<NioSession> ioProcessor) {
+    protected MinaService(FactoryManager manager, org.apache.sshd.common.io.IoHandler handler, IoProcessor<NioSession> ioProcessor) {
         this.manager = Objects.requireNonNull(manager, "No factory manager provided");
         this.handler = Objects.requireNonNull(handler, "No IoHandler provided");
         this.ioProcessor = Objects.requireNonNull(ioProcessor, "No IoProcessor provided");