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;