You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@mina.apache.org by tr...@apache.org on 2007/09/27 15:42:09 UTC

svn commit: r580014 - in /mina/trunk/core/src/main/java/org/apache/mina: common/AbstractIoSession.java common/BroadcastIoSession.java common/IoSession.java transport/socket/DatagramSession.java transport/socket/nio/NioDatagramSession.java

Author: trustin
Date: Thu Sep 27 06:42:07 2007
New Revision: 580014

URL: http://svn.apache.org/viewvc?rev=580014&view=rev
Log:
* Merged the only one method in BroadcastIoSession into IoSession for the API simplicity.
* Added some assertion in AbstractIoSession.write(Object, SocketAddress) to lessen the work needed by transport implementors


Removed:
    mina/trunk/core/src/main/java/org/apache/mina/common/BroadcastIoSession.java
Modified:
    mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSession.java
    mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java?rev=580014&r1=580013&r2=580014&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/AbstractIoSession.java Thu Sep 27 06:42:07 2007
@@ -158,6 +158,11 @@
         if (message == null) {
             throw new NullPointerException("message");
         }
+        
+        if (!getTransportMetadata().isConnectionless() &&
+                remoteAddress != null) {
+            throw new UnsupportedOperationException();
+        }
 
         if (isClosing() || !isConnected()) {
             return DefaultWriteFuture.newNotWrittenFuture(this);

Modified: mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java?rev=580014&r1=580013&r2=580014&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/common/IoSession.java Thu Sep 27 06:42:07 2007
@@ -89,6 +89,28 @@
     WriteFuture write(Object message);
 
     /**
+     * (Optional) Writes the specified <tt>message</tt> to the specified <tt>destination</tt>.
+     * This operation is asynchronous; {@link IoHandler#messageSent(IoSession, Object)}
+     * will be invoked when the message is actually sent to remote peer. You can
+     * also wait for the returned {@link WriteFuture} if you want to wait for
+     * the message actually written.
+     * <p>
+     * When you implement a client that receives a broadcast message from a server
+     * such as DHCP server, the client might need to send a response message for the
+     * broadcast message the server sent.  Because the remote address of the session
+     * is not the address of the server in case of broadcasting, there should be a
+     * way to specify the destination when you write the response message.
+     * This interface provides {@link #write(Object, SocketAddress)} method so you
+     * can specify the destination.
+     *
+     * @param destination <tt>null</tt> if you want the message sent to the
+     *                    default remote address
+     *                    
+     * @throws UnsupportedOperationException if this operation is not supported
+     */
+    WriteFuture write(Object message, SocketAddress destination);
+
+    /**
      * Closes this session immediately.  This operation is asynchronous.
      * Wait for the returned {@link CloseFuture} if you want to wait for
      * the session actually closed.

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSession.java?rev=580014&r1=580013&r2=580014&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/DatagramSession.java Thu Sep 27 06:42:07 2007
@@ -2,9 +2,9 @@
 
 import java.net.InetSocketAddress;
 
-import org.apache.mina.common.BroadcastIoSession;
+import org.apache.mina.common.IoSession;
 
-public interface DatagramSession extends BroadcastIoSession {
+public interface DatagramSession extends IoSession {
     DatagramSessionConfig getConfig();
 
     InetSocketAddress getRemoteAddress();

Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java?rev=580014&r1=580013&r2=580014&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioDatagramSession.java Thu Sep 27 06:42:07 2007
@@ -35,7 +35,6 @@
 import org.apache.mina.common.IoSession;
 import org.apache.mina.common.RuntimeIoException;
 import org.apache.mina.common.TransportMetadata;
-import org.apache.mina.common.WriteFuture;
 import org.apache.mina.transport.socket.AbstractDatagramSessionConfig;
 import org.apache.mina.transport.socket.DatagramSession;
 import org.apache.mina.transport.socket.DatagramSessionConfig;