You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by el...@apache.org on 2014/09/10 14:41:11 UTC

git commit: Added the localAddress in the NioSocketConnector (DIRMINA-816)

Repository: mina
Updated Branches:
  refs/heads/2.0 2cb34e538 -> 46f929204


Added the localAddress in the NioSocketConnector (DIRMINA-816)

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

Branch: refs/heads/2.0
Commit: 46f929204de3efa24ceffd2e87838eb85005d194
Parents: 2cb34e5
Author: Emmanuel Lécharny <el...@symas.com>
Authored: Wed Sep 10 14:40:59 2014 +0200
Committer: Emmanuel Lécharny <el...@symas.com>
Committed: Wed Sep 10 14:40:59 2014 +0200

----------------------------------------------------------------------
 .../mina/core/service/AbstractIoConnector.java  | 20 +++++++++++++++++++-
 .../apache/mina/core/service/IoConnector.java   | 16 ++++++++++++++--
 .../socket/nio/NioDatagramConnector.java        |  1 +
 3 files changed, 34 insertions(+), 3 deletions(-)
----------------------------------------------------------------------


http://git-wip-us.apache.org/repos/asf/mina/blob/46f92920/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java b/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
index 4413b28..c67bc94 100644
--- a/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
+++ b/mina-core/src/main/java/org/apache/mina/core/service/AbstractIoConnector.java
@@ -44,8 +44,12 @@ public abstract class AbstractIoConnector extends AbstractIoService implements I
 
     private long connectTimeoutInMillis = 60 * 1000L; // 1 minute by default
 
+    /** The remote address we are connected to */
     private SocketAddress defaultRemoteAddress;
 
+    /** The local address */
+    private SocketAddress defaultLocalAddress;
+
     /**
      * Constructor for {@link AbstractIoConnector}. You need to provide a default
      * session configuration and an {@link Executor} for handling I/O events. If
@@ -128,6 +132,20 @@ public abstract class AbstractIoConnector extends AbstractIoService implements I
     /**
      * {@inheritDoc}
      */
+    public final void setDefaultLocalAddress(SocketAddress localAddress) {
+        defaultLocalAddress = localAddress;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
+    public final SocketAddress getDefaultLocalAddress() {
+        return defaultLocalAddress;
+    }
+
+    /**
+     * {@inheritDoc}
+     */
     public final void setDefaultRemoteAddress(SocketAddress defaultRemoteAddress) {
         if (defaultRemoteAddress == null) {
             throw new IllegalArgumentException("defaultRemoteAddress");
@@ -284,6 +302,6 @@ public abstract class AbstractIoConnector extends AbstractIoService implements I
     public String toString() {
         TransportMetadata m = getTransportMetadata();
         return '(' + m.getProviderName() + ' ' + m.getName() + " connector: " + "managedSessionCount: "
-                + getManagedSessionCount() + ')';
+        + getManagedSessionCount() + ')';
     }
 }

http://git-wip-us.apache.org/repos/asf/mina/blob/46f92920/mina-core/src/main/java/org/apache/mina/core/service/IoConnector.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/core/service/IoConnector.java b/mina-core/src/main/java/org/apache/mina/core/service/IoConnector.java
index f769553..3a66cb0 100644
--- a/mina-core/src/main/java/org/apache/mina/core/service/IoConnector.java
+++ b/mina-core/src/main/java/org/apache/mina/core/service/IoConnector.java
@@ -83,9 +83,21 @@ public interface IoConnector extends IoService {
     void setDefaultRemoteAddress(SocketAddress defaultRemoteAddress);
 
     /**
-     * Connects to the {@link #setDefaultRemoteAddress(SocketAddress) default remote address}.
+     * Returns the default local address
+     */
+    SocketAddress getDefaultLocalAddress();
+
+    /**
+     * Sets the default local address
+     */
+    void setDefaultLocalAddress(SocketAddress defaultLocalAddress);
+
+    /**
+     * Connects to the {@link #setDefaultRemoteAddress(SocketAddress) default
+     * remote address}.
      * 
-     * @throws IllegalStateException if no default remoted address is set.
+     * @throws IllegalStateException
+     *             if no default remoted address is set.
      */
     ConnectFuture connect();
 

http://git-wip-us.apache.org/repos/asf/mina/blob/46f92920/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
----------------------------------------------------------------------
diff --git a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
index 4dcfd31..54eb260 100644
--- a/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
+++ b/mina-core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramConnector.java
@@ -125,6 +125,7 @@ DatagramConnector {
             if (localAddress != null) {
                 try {
                     ch.socket().bind(localAddress);
+                    setDefaultLocalAddress(localAddress);
                 } catch (IOException ioe) {
                     // Add some info regarding the address we try to bind to the
                     // message