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, <[email protected]> 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); > > >
