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 2009/03/08 20:24:58 UTC
svn commit: r751504 - in /mina/trunk/core/src/main/java/org/apache/mina:
core/polling/ core/service/ core/session/ core/write/ transport/socket/nio/
transport/vmpipe/
Author: elecharny
Date: Sun Mar 8 19:24:58 2009
New Revision: 751504
URL: http://svn.apache.org/viewvc?rev=751504&view=rev
Log:
o Added Javadoc to the WriteRequestQueue interface
o Rename CloseRequestAwareWriteRequestQueue to CloseAwareWriteQueue
o Added some comments in code
o Renamed finishSessionInitialization to initSession
o Minor refactoring
Modified:
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Sun Mar 8 19:24:58 2009
@@ -252,7 +252,7 @@
session = newSession;
}
- finishSessionInitialization(session, null, null);
+ initSession(session, null, null);
try {
this.getFilterChainBuilder().buildFilterChain(session.getFilterChain());
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sun Mar 8 19:24:58 2009
@@ -478,12 +478,15 @@
H handle = handles.next();
handles.remove();
+ // Associates a new created connection to a processor,
+ // and get back a session
T session = accept(processor, handle);
+
if (session == null) {
break;
}
- finishSessionInitialization(session, null, null);
+ initSession(session, null, null);
// add the session to the SocketIoProcessor
session.getProcessor().add(session);
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Sun Mar 8 19:24:58 2009
@@ -324,7 +324,7 @@
if (connect(handle, remoteAddress)) {
ConnectFuture future = new DefaultConnectFuture();
T session = newSession(processor, handle);
- finishSessionInitialization(session, future, sessionInitializer);
+ initSession(session, future, sessionInitializer);
// Forward the remaining process to the IoProcessor.
session.getProcessor().add(session);
success = true;
@@ -432,7 +432,7 @@
try {
if (finishConnect(handle)) {
T session = newSession(processor, handle);
- finishSessionInitialization(session, connectionRequest, connectionRequest.getSessionInitializer());
+ initSession(session, connectionRequest, connectionRequest.getSessionInitializer());
// Forward the remaining process to the IoProcessor.
session.getProcessor().add(session);
nHandles ++;
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Sun Mar 8 19:24:58 2009
@@ -437,12 +437,13 @@
// TODO Figure out make it work without causing a compiler error / warning.
@SuppressWarnings("unchecked")
- protected final void finishSessionInitialization(IoSession session,
+ protected final void initSession(IoSession session,
IoFuture future, IoSessionInitializer sessionInitializer) {
// Update lastIoTime if needed.
if (stats.getLastReadTime() == 0) {
((IoServiceStatistics)stats).setLastReadTime(getActivationTime());
}
+
if (stats.getLastWriteTime() == 0) {
((IoServiceStatistics)stats).setLastWriteTime(getActivationTime());
}
@@ -472,7 +473,7 @@
"Failed to initialize a writeRequestQueue.", e);
}
- if (future != null && future instanceof ConnectFuture) {
+ if ((future != null) && (future instanceof ConnectFuture)) {
// DefaultIoFilterChain will notify the future. (We support ConnectFuture only for now).
session.setAttribute(DefaultIoFilterChain.SESSION_CREATED_FUTURE,
future);
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Sun Mar 8 19:24:58 2009
@@ -553,11 +553,13 @@
}
/**
- * TODO Add method documentation
+ * Create a new close aware write queue, based on the given write queue.
+ *
+ * @param writeRequestQueue The write request queue
*/
public final void setWriteRequestQueue(WriteRequestQueue writeRequestQueue) {
this.writeRequestQueue =
- new CloseRequestAwareWriteRequestQueue(writeRequestQueue);
+ new CloseAwareWriteQueue(writeRequestQueue);
}
@@ -1244,38 +1246,61 @@
/**
- * TODO Add method documentation. Name is ridiculously too long.
+ * A queue which handles the CLOSE request.
+ *
+ * TODO : Check that when closing a session, all the pending
+ * requests are correctly sent.
*/
- private class CloseRequestAwareWriteRequestQueue implements WriteRequestQueue {
+ private class CloseAwareWriteQueue implements WriteRequestQueue {
private final WriteRequestQueue q;
- public CloseRequestAwareWriteRequestQueue(WriteRequestQueue q) {
+ /**
+ * {@inheritDoc}
+ */
+ public CloseAwareWriteQueue(WriteRequestQueue q) {
this.q = q;
}
+ /**
+ * {@inheritDoc}
+ */
public synchronized WriteRequest poll(IoSession session) {
WriteRequest answer = q.poll(session);
+
if (answer == CLOSE_REQUEST) {
AbstractIoSession.this.close();
dispose(session);
answer = null;
}
+
return answer;
}
+ /**
+ * {@inheritDoc}
+ */
public void offer(IoSession session, WriteRequest e) {
q.offer(session, e);
}
+ /**
+ * {@inheritDoc}
+ */
public boolean isEmpty(IoSession session) {
return q.isEmpty(session);
}
+ /**
+ * {@inheritDoc}
+ */
public void clear(IoSession session) {
q.clear(session);
}
+ /**
+ * {@inheritDoc}
+ */
public void dispose(IoSession session) {
q.dispose(session);
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Sun Mar 8 19:24:58 2009
@@ -159,24 +159,39 @@
}
private static class DefaultWriteRequestQueue implements WriteRequestQueue {
-
+ /** A queue to store incoming write requests */
private final Queue<WriteRequest> q = new CircularQueue<WriteRequest>(16);
+ /**
+ * {@inheritDoc}
+ */
public void dispose(IoSession session) {
}
+ /**
+ * {@inheritDoc}
+ */
public void clear(IoSession session) {
q.clear();
}
+ /**
+ * {@inheritDoc}
+ */
public synchronized boolean isEmpty(IoSession session) {
return q.isEmpty();
}
+ /**
+ * {@inheritDoc}
+ */
public synchronized void offer(IoSession session, WriteRequest writeRequest) {
q.offer(writeRequest);
}
+ /**
+ * {@inheritDoc}
+ */
public synchronized WriteRequest poll(IoSession session) {
return q.poll();
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java Sun Mar 8 19:24:58 2009
@@ -30,14 +30,37 @@
*/
public interface WriteRequestQueue {
+ /**
+ * Get the first request available in the queue for a session.
+ * @param session The session
+ * @return The first available request, if any.
+ */
WriteRequest poll(IoSession session);
+
+ /**
+ * Add a new WriteRequest to the session write's queue
+ * @param session The session
+ * @param writeRequest The writeRequest to add
+ */
void offer(IoSession session, WriteRequest writeRequest);
+
+ /**
+ * Tells if the WriteRequest queue is empty or not for a session
+ * @param session The session to check
+ * @return <code>true</code> if the writeRequest is empty
+ */
boolean isEmpty(IoSession session);
+
+ /**
+ * Removes all the requests from this session's queue.
+ * @param session The associated session
+ */
void clear(IoSession session);
/**
* Disposes any releases associated with the specified session.
* This method is invoked on disconnection.
+ * @param session The associated session
*/
void dispose(IoSession session);
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java Sun Mar 8 19:24:58 2009
@@ -216,6 +216,7 @@
// accept the connection from the client
SocketChannel ch = handle.accept();
+
if (ch == null) {
return null;
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Sun Mar 8 19:24:58 2009
@@ -162,6 +162,6 @@
}
void doFinishSessionInitialization(IoSession session, IoFuture future) {
- finishSessionInitialization(session, future, null);
+ initSession(session, future, null);
}
}
Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=751504&r1=751503&r2=751504&view=diff
==============================================================================
--- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
+++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Sun Mar 8 19:24:58 2009
@@ -99,7 +99,7 @@
VmPipeSession localSession = new VmPipeSession(this,
getListeners(), actualLocalAddress, getHandler(), entry);
- finishSessionInitialization(localSession, future, sessionInitializer);
+ initSession(localSession, future, sessionInitializer);
// and reclaim the local address when the connection is closed.
localSession.getCloseFuture().addListener(LOCAL_ADDRESS_RECLAIMER);
Re: svn commit: r751504 - in /mina/trunk/core/src/main/java/org/apache/mina:
core/polling/ core/service/ core/session/ core/write/ transport/socket/nio/
transport/vmpipe/
Posted by Julien Vermillard <jv...@gmail.com>.
This commit broke Serial transport compilation.
Please don't forget SerialTransport when you are recompiling MINA
(-Dwith-LGPL-dependencies).
Julien
On Sun, Mar 8, 2009 at 8:24 PM, <el...@apache.org> wrote:
> Author: elecharny
> Date: Sun Mar 8 19:24:58 2009
> New Revision: 751504
>
> URL: http://svn.apache.org/viewvc?rev=751504&view=rev
> Log:
> o Added Javadoc to the WriteRequestQueue interface
> o Rename CloseRequestAwareWriteRequestQueue to CloseAwareWriteQueue
> o Added some comments in code
> o Renamed finishSessionInitialization to initSession
> o Minor refactoring
>
> Modified:
> mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
> mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
> mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
> mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
> mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
> mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
> mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
> mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
> mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
> mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingConnectionlessIoAcceptor.java Sun Mar 8 19:24:58 2009
> @@ -252,7 +252,7 @@
> session = newSession;
> }
>
> - finishSessionInitialization(session, null, null);
> + initSession(session, null, null);
>
> try {
> this.getFilterChainBuilder().buildFilterChain(session.getFilterChain());
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoAcceptor.java Sun Mar 8 19:24:58 2009
> @@ -478,12 +478,15 @@
> H handle = handles.next();
> handles.remove();
>
> + // Associates a new created connection to a processor,
> + // and get back a session
> T session = accept(processor, handle);
> +
> if (session == null) {
> break;
> }
>
> - finishSessionInitialization(session, null, null);
> + initSession(session, null, null);
>
> // add the session to the SocketIoProcessor
> session.getProcessor().add(session);
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/polling/AbstractPollingIoConnector.java Sun Mar 8 19:24:58 2009
> @@ -324,7 +324,7 @@
> if (connect(handle, remoteAddress)) {
> ConnectFuture future = new DefaultConnectFuture();
> T session = newSession(processor, handle);
> - finishSessionInitialization(session, future, sessionInitializer);
> + initSession(session, future, sessionInitializer);
> // Forward the remaining process to the IoProcessor.
> session.getProcessor().add(session);
> success = true;
> @@ -432,7 +432,7 @@
> try {
> if (finishConnect(handle)) {
> T session = newSession(processor, handle);
> - finishSessionInitialization(session, connectionRequest, connectionRequest.getSessionInitializer());
> + initSession(session, connectionRequest, connectionRequest.getSessionInitializer());
> // Forward the remaining process to the IoProcessor.
> session.getProcessor().add(session);
> nHandles ++;
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/service/AbstractIoService.java Sun Mar 8 19:24:58 2009
> @@ -437,12 +437,13 @@
>
> // TODO Figure out make it work without causing a compiler error / warning.
> @SuppressWarnings("unchecked")
> - protected final void finishSessionInitialization(IoSession session,
> + protected final void initSession(IoSession session,
> IoFuture future, IoSessionInitializer sessionInitializer) {
> // Update lastIoTime if needed.
> if (stats.getLastReadTime() == 0) {
> ((IoServiceStatistics)stats).setLastReadTime(getActivationTime());
> }
> +
> if (stats.getLastWriteTime() == 0) {
> ((IoServiceStatistics)stats).setLastWriteTime(getActivationTime());
> }
> @@ -472,7 +473,7 @@
> "Failed to initialize a writeRequestQueue.", e);
> }
>
> - if (future != null && future instanceof ConnectFuture) {
> + if ((future != null) && (future instanceof ConnectFuture)) {
> // DefaultIoFilterChain will notify the future. (We support ConnectFuture only for now).
> session.setAttribute(DefaultIoFilterChain.SESSION_CREATED_FUTURE,
> future);
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/session/AbstractIoSession.java Sun Mar 8 19:24:58 2009
> @@ -553,11 +553,13 @@
> }
>
> /**
> - * TODO Add method documentation
> + * Create a new close aware write queue, based on the given write queue.
> + *
> + * @param writeRequestQueue The write request queue
> */
> public final void setWriteRequestQueue(WriteRequestQueue writeRequestQueue) {
> this.writeRequestQueue =
> - new CloseRequestAwareWriteRequestQueue(writeRequestQueue);
> + new CloseAwareWriteQueue(writeRequestQueue);
> }
>
>
> @@ -1244,38 +1246,61 @@
>
>
> /**
> - * TODO Add method documentation. Name is ridiculously too long.
> + * A queue which handles the CLOSE request.
> + *
> + * TODO : Check that when closing a session, all the pending
> + * requests are correctly sent.
> */
> - private class CloseRequestAwareWriteRequestQueue implements WriteRequestQueue {
> + private class CloseAwareWriteQueue implements WriteRequestQueue {
>
> private final WriteRequestQueue q;
>
> - public CloseRequestAwareWriteRequestQueue(WriteRequestQueue q) {
> + /**
> + * {@inheritDoc}
> + */
> + public CloseAwareWriteQueue(WriteRequestQueue q) {
> this.q = q;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public synchronized WriteRequest poll(IoSession session) {
> WriteRequest answer = q.poll(session);
> +
> if (answer == CLOSE_REQUEST) {
> AbstractIoSession.this.close();
> dispose(session);
> answer = null;
> }
> +
> return answer;
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void offer(IoSession session, WriteRequest e) {
> q.offer(session, e);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public boolean isEmpty(IoSession session) {
> return q.isEmpty(session);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void clear(IoSession session) {
> q.clear(session);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void dispose(IoSession session) {
> q.dispose(session);
> }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/session/DefaultIoSessionDataStructureFactory.java Sun Mar 8 19:24:58 2009
> @@ -159,24 +159,39 @@
> }
>
> private static class DefaultWriteRequestQueue implements WriteRequestQueue {
> -
> + /** A queue to store incoming write requests */
> private final Queue<WriteRequest> q = new CircularQueue<WriteRequest>(16);
>
> + /**
> + * {@inheritDoc}
> + */
> public void dispose(IoSession session) {
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public void clear(IoSession session) {
> q.clear();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public synchronized boolean isEmpty(IoSession session) {
> return q.isEmpty();
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public synchronized void offer(IoSession session, WriteRequest writeRequest) {
> q.offer(writeRequest);
> }
>
> + /**
> + * {@inheritDoc}
> + */
> public synchronized WriteRequest poll(IoSession session) {
> return q.poll();
> }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/core/write/WriteRequestQueue.java Sun Mar 8 19:24:58 2009
> @@ -30,14 +30,37 @@
> */
> public interface WriteRequestQueue {
>
> + /**
> + * Get the first request available in the queue for a session.
> + * @param session The session
> + * @return The first available request, if any.
> + */
> WriteRequest poll(IoSession session);
> +
> + /**
> + * Add a new WriteRequest to the session write's queue
> + * @param session The session
> + * @param writeRequest The writeRequest to add
> + */
> void offer(IoSession session, WriteRequest writeRequest);
> +
> + /**
> + * Tells if the WriteRequest queue is empty or not for a session
> + * @param session The session to check
> + * @return <code>true</code> if the writeRequest is empty
> + */
> boolean isEmpty(IoSession session);
> +
> + /**
> + * Removes all the requests from this session's queue.
> + * @param session The associated session
> + */
> void clear(IoSession session);
>
> /**
> * Disposes any releases associated with the specified session.
> * This method is invoked on disconnection.
> + * @param session The associated session
> */
> void dispose(IoSession session);
> }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/socket/nio/NioSocketAcceptor.java Sun Mar 8 19:24:58 2009
> @@ -216,6 +216,7 @@
>
> // accept the connection from the client
> SocketChannel ch = handle.accept();
> +
> if (ch == null) {
> return null;
> }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeAcceptor.java Sun Mar 8 19:24:58 2009
> @@ -162,6 +162,6 @@
> }
>
> void doFinishSessionInitialization(IoSession session, IoFuture future) {
> - finishSessionInitialization(session, future, null);
> + initSession(session, future, null);
> }
> }
>
> Modified: mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java
> URL: http://svn.apache.org/viewvc/mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java?rev=751504&r1=751503&r2=751504&view=diff
> ==============================================================================
> --- mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java (original)
> +++ mina/trunk/core/src/main/java/org/apache/mina/transport/vmpipe/VmPipeConnector.java Sun Mar 8 19:24:58 2009
> @@ -99,7 +99,7 @@
> VmPipeSession localSession = new VmPipeSession(this,
> getListeners(), actualLocalAddress, getHandler(), entry);
>
> - finishSessionInitialization(localSession, future, sessionInitializer);
> + initSession(localSession, future, sessionInitializer);
>
> // and reclaim the local address when the connection is closed.
> localSession.getCloseFuture().addListener(LOCAL_ADDRESS_RECLAIMER);
>
>
>