EMMA Coverage Report (generated Wed Jun 08 12:10:57 KST 2005)
[all classes][org.apache.mina.protocol.vmpipe]

COVERAGE SUMMARY FOR SOURCE FILE [VmPipeIdleStatusChecker.java]

nameclass, %method, %block, %line, %
VmPipeIdleStatusChecker.java0%   (0/3)0%   (0/5)0%   (0/199)0%   (0/44)

COVERAGE BREAKDOWN BY CLASS AND METHOD

nameclass, %method, %block, %line, %
     
class VmPipeIdleStatusChecker0%   (0/1)0%   (0/3)0%   (0/43)0%   (0/10)
<static initializer> 0%   (0/1)0%   (0/5)0%   (0/1)
VmPipeIdleStatusChecker (): void 0%   (0/1)0%   (0/18)0%   (0/5)
addSession (VmPipeSession): void 0%   (0/1)0%   (0/20)0%   (0/4)
     
class VmPipeIdleStatusChecker$10%   (0/1)100% (0/0)100% (0/0)100% (0/0)
     
class VmPipeIdleStatusChecker$Worker0%   (0/1)0%   (0/2)0%   (0/156)0%   (0/34)
VmPipeIdleStatusChecker$Worker (VmPipeIdleStatusChecker): void 0%   (0/1)0%   (0/10)0%   (0/4)
run (): void 0%   (0/1)0%   (0/146)0%   (0/30)

1/*
2 * @(#) $Id: VmPipeIdleStatusChecker.java 165129 2005-04-28 11:28:41Z trustin $
3 */
4package org.apache.mina.protocol.vmpipe;
5 
6import java.util.IdentityHashMap;
7import java.util.Iterator;
8import java.util.Map;
9 
10import org.apache.mina.common.IdleStatus;
11import org.apache.mina.common.SessionConfig;
12 
13/**
14 * Dectects idle sessions and fires <tt>sessionIdle</tt> events to them. 
15 * 
16 * @author Trustin Lee (trustin@apache.org)
17 * @version $Rev: 165129 $, $Date: 2005-04-28 20:28:41 +0900 $
18 */
19class VmPipeIdleStatusChecker
20{
21    static final VmPipeIdleStatusChecker INSTANCE = new VmPipeIdleStatusChecker();
22 
23    private final Map sessions = new IdentityHashMap(); // will use as a set
24 
25    private final Worker worker = new Worker();
26 
27    private VmPipeIdleStatusChecker()
28    {
29        worker.start();
30    }
31 
32    void addSession( VmPipeSession session )
33    {
34        synchronized( sessions )
35        {
36            sessions.put( session, session );
37        }
38    }
39 
40    private class Worker extends Thread
41    {
42        private Worker()
43        {
44            super( "VmPipeIdleStatusChecker" );
45            setDaemon( true );
46        }
47 
48        public void run()
49        {
50            for( ;; )
51            {
52                try
53                {
54                    Thread.sleep( 1000 );
55                }
56                catch( InterruptedException e )
57                {
58                }
59 
60                long currentTime = System.currentTimeMillis();
61 
62                synchronized( sessions )
63                {
64                    Iterator it = sessions.keySet().iterator();
65                    while( it.hasNext() )
66                    {
67                        VmPipeSession session = ( VmPipeSession ) it.next();
68                        if( !session.isConnected() )
69                        {
70                            it.remove();
71                        }
72                        else
73                        {
74                            long idleTime;
75                            SessionConfig config = session.getConfig();
76 
77                            if( !session.isIdle( IdleStatus.BOTH_IDLE ) )
78                            {
79                                idleTime = config
80                                        .getIdleTimeInMillis( IdleStatus.BOTH_IDLE );
81                                session.setIdle( IdleStatus.BOTH_IDLE,
82                                                 idleTime > 0L
83                                                 && ( currentTime - session.getLastIoTime() ) > idleTime );
84                                if( session.isIdle( IdleStatus.BOTH_IDLE ) )
85                                    session.getManagerFilterChain()
86                                            .sessionIdle( session,
87                                                          IdleStatus.BOTH_IDLE );
88                            }
89 
90                            if( !session.isIdle( IdleStatus.READER_IDLE ) )
91                            {
92                                idleTime = config
93                                        .getIdleTimeInMillis( IdleStatus.READER_IDLE );
94                                session.setIdle( IdleStatus.READER_IDLE,
95                                                 idleTime > 0L
96                                                 && ( currentTime - session.getLastReadTime() ) > idleTime );
97                                if( session.isIdle( IdleStatus.READER_IDLE ) )
98                                    session.getManagerFilterChain()
99                                            .sessionIdle( session,
100                                                          IdleStatus.READER_IDLE );
101                            }
102 
103                            if( !session.isIdle( IdleStatus.WRITER_IDLE ) )
104                            {
105                                idleTime = config
106                                        .getIdleTimeInMillis( IdleStatus.WRITER_IDLE );
107                                session.setIdle( IdleStatus.WRITER_IDLE,
108                                                 idleTime > 0L
109                                                 && ( currentTime - session.getLastWriteTime() ) > idleTime );
110                                if( session.isIdle( IdleStatus.WRITER_IDLE ) )
111                                    session.getManagerFilterChain()
112                                            .sessionIdle( session,
113                                                          IdleStatus.WRITER_IDLE );
114                            }
115                        }
116                    }
117                }
118            }
119        }
120    }
121}

[all classes][org.apache.mina.protocol.vmpipe]
EMMA 2.0.4217 (C) Vladimir Roubtsov