KickJava   Java API By Example, From Geeks To Geeks.

Java > Open Source Codes > org > apache > mina > integration > jmx > IoSessionManager


1 /*
2  * Licensed to the Apache Software Foundation (ASF) under one
3  * or more contributor license agreements. See the NOTICE file
4  * distributed with this work for additional information
5  * regarding copyright ownership. The ASF licenses this file
6  * to you under the Apache License, Version 2.0 (the
7  * "License"); you may not use this file except in compliance
8  * with the License. You may obtain a copy of the License at
9  *
10  * http://www.apache.org/licenses/LICENSE-2.0
11  *
12  * Unless required by applicable law or agreed to in writing,
13  * software distributed under the License is distributed on an
14  * "AS IS" BASIS, WITHOUT WARRANTIES OR CONDITIONS OF ANY
15  * KIND, either express or implied. See the License for the
16  * specific language governing permissions and limitations
17  * under the License.
18  *
19  */

20 package org.apache.mina.integration.jmx;
21
22 import java.util.Date JavaDoc;
23 import java.util.List JavaDoc;
24
25 import org.apache.mina.common.IdleStatus;
26 import org.apache.mina.common.IoFilterChain;
27 import org.apache.mina.common.IoSession;
28 import org.apache.mina.filter.LoggingFilter;
29 import org.apache.mina.management.IoSessionStat;
30 import org.apache.mina.management.StatCollector;
31
32 /**
33  * @author The Apache Directory Project (mina-dev@directory.apache.org)
34  * @version $Rev: 555855 $, $Date: 2007-07-13 12:19:00 +0900 (금, 13 7월 2007) $
35  */

36 public class IoSessionManager implements IoSessionManagerMBean {
37
38     private IoSession session;
39
40     /**
41      * create the session manager
42      * @param session the MINA's session to manage
43      */

44     public IoSessionManager(IoSession session) {
45         this.session = session;
46     }
47
48     public boolean isConnected() {
49         return session.isConnected();
50     }
51
52     public long getReadBytes() {
53         return session.getReadBytes();
54     }
55
56     public long getWrittenBytes() {
57         return session.getWrittenBytes();
58     }
59
60     public long getReadMessages() {
61         return session.getReadMessages();
62     }
63
64     public long getWrittenMessages() {
65         return session.getWrittenMessages();
66     }
67
68     public void close() throws InterruptedException JavaDoc {
69         session.close().join();
70     }
71
72     public Date JavaDoc getCreationTime() {
73         return new Date JavaDoc(session.getCreationTime());
74     }
75
76     public Date JavaDoc getLastIoTime() {
77         return new Date JavaDoc(session.getLastIoTime());
78     }
79
80     public Date JavaDoc getLastReadTime() {
81         return new Date JavaDoc(session.getLastReadTime());
82     }
83
84     public Date JavaDoc getLastWriteTime() {
85         return new Date JavaDoc(session.getLastWriteTime());
86     }
87
88     public String JavaDoc[] getInstalledFilters() {
89         List JavaDoc filters = session.getFilterChain().getAll();
90         String JavaDoc[] res = new String JavaDoc[filters.size()];
91         for (int i = 0; i < res.length; i++) {
92             res[i] = ((IoFilterChain.Entry) filters.get(i)).getName();
93         }
94         return res;
95     }
96
97     public void addLastLoggingFilter() {
98         LoggingFilter f = new LoggingFilter();
99         session.getFilterChain().addLast("LoggerLast", f);
100     }
101
102     public void removeLastLoggingFilter() {
103
104         session.getFilterChain().remove("LoggerLast");
105     }
106
107     public void addFirstLoggingFilter() {
108         LoggingFilter f = new LoggingFilter();
109         session.getFilterChain().addFirst("LoggerFirst", f);
110     }
111
112     public void removeFirstLoggingFilter() {
113
114         session.getFilterChain().remove("LoggerFirst");
115     }
116
117     // IDLE monitoring
118

119     public long getReadIdleTime() {
120         return session.getIdleTimeInMillis(IdleStatus.READER_IDLE);
121     }
122
123     public long getWriteIdleTime() {
124         return session.getIdleTimeInMillis(IdleStatus.WRITER_IDLE);
125     }
126
127     public long getBothIdleTime() {
128         return session.getIdleTimeInMillis(IdleStatus.BOTH_IDLE);
129     }
130
131     public float getByteReadThroughtput() {
132         IoSessionStat stats = (IoSessionStat) session
133                 .getAttribute(StatCollector.KEY);
134         if (stats == null)
135             return Float.NaN;
136         else
137             return stats.getByteReadThroughput();
138     }
139
140     public float getByteWrittenThroughtput() {
141         IoSessionStat stats = (IoSessionStat) session
142                 .getAttribute(StatCollector.KEY);
143         if (stats == null)
144             return Float.NaN;
145         else
146             return stats.getByteWrittenThroughput();
147     }
148
149     public float getMessageReadThroughtput() {
150         IoSessionStat stats = (IoSessionStat) session
151                 .getAttribute(StatCollector.KEY);
152         if (stats == null)
153             return Float.NaN;
154         else
155             return stats.getMessageReadThroughput();
156     }
157
158     public float getMessageWrittenThroughtput() {
159         IoSessionStat stats = (IoSessionStat) session
160                 .getAttribute(StatCollector.KEY);
161         if (stats == null)
162             return Float.NaN;
163         else
164             return stats.getMessageWrittenThroughput();
165     }
166 }
167
Popular Tags