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");