1 package org.apache.mina.io.socket;
2
3 import org.apache.mina.common.ByteBuffer;
4 import org.apache.mina.io.IoFilterChain;
5 import org.apache.mina.io.IoSession;
6 import org.apache.mina.io.IoSessionManager;
7 import org.apache.mina.io.IoSessionManagerFilterChain;
8 import org.apache.mina.util.Queue;
9
10 /***
11 * An {@link IoFilterChain} for socket transport (TCP/IP).
12 *
13 * @author The Apache Directory Project
14 */
15 class SocketSessionManagerFilterChain extends IoSessionManagerFilterChain {
16
17 SocketSessionManagerFilterChain( IoSessionManager manager )
18 {
19 super( manager );
20 }
21
22 protected void doWrite( IoSession session, ByteBuffer buf, Object marker )
23 {
24 SocketSession s = ( SocketSession ) session;
25 Queue writeBufferQueue = s.getWriteBufferQueue();
26 Queue writeMarkerQueue = s.getWriteMarkerQueue();
27
28 synchronized( writeBufferQueue )
29 {
30 writeBufferQueue.push( buf );
31 writeMarkerQueue.push( marker );
32 if( writeBufferQueue.size() == 1 )
33 {
34
35 SocketIoProcessor.getInstance().flushSession( s );
36 }
37 }
38 }
39 }