1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.integration.jmx;
21
22 import java.util.Date;
23 import java.util.List;
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.common.support.BaseIoSession;
29 import org.apache.mina.filter.LoggingFilter;
30 import org.apache.mina.management.IoSessionStat;
31 import org.apache.mina.management.StatCollector;
32
33
34
35
36
37 public class IoSessionManager implements IoSessionManagerMBean {
38
39 private IoSession session;
40
41
42
43
44
45 public IoSessionManager(IoSession session) {
46 this.session = session;
47 }
48
49
50
51
52 public boolean isConnected() {
53 return session.isConnected();
54 }
55
56
57
58
59 public long getReadBytes() {
60 return session.getReadBytes();
61 }
62
63
64
65
66 public long getWrittenBytes() {
67 return session.getWrittenBytes();
68 }
69
70 public long getReadMessages() {
71 return ((BaseIoSession) session).getReadMessages();
72 }
73
74 public long getWrittenMessages() {
75 return ((BaseIoSession) session).getWrittenMessages();
76 }
77
78
79
80
81 public void close() {
82 session.close().join();
83 }
84
85
86
87
88 public Date getCreationTime() {
89 return new Date(session.getCreationTime());
90 }
91
92
93
94
95 public Date getLastIoTime() {
96 return new Date(session.getLastIoTime());
97 }
98
99
100
101
102 public Date getLastReadTime() {
103 return new Date(session.getLastReadTime());
104 }
105
106
107
108
109 public Date getLastWriteTime() {
110 return new Date(session.getLastWriteTime());
111 }
112
113
114
115
116 public String[] getInstalledFilters() {
117 List filters = session.getFilterChain().getAll();
118 String[] res = new String[filters.size()];
119 for (int i = 0; i < res.length; i++) {
120 res[i] = ((IoFilterChain.Entry) filters.get(i)).getName();
121 }
122 return res;
123 }
124
125
126
127
128 public void addLastLoggingFilter() {
129 LoggingFilter f = new LoggingFilter();
130 session.getFilterChain().addLast("LoggerLast", f);
131 }
132
133
134
135
136 public void removeLastLoggingFilter() {
137
138 session.getFilterChain().remove("LoggerLast");
139 }
140
141
142
143
144 public void addFirstLoggingFilter() {
145 LoggingFilter f = new LoggingFilter();
146 session.getFilterChain().addFirst("LoggerFirst", f);
147 }
148
149 public void removeFirstLoggingFilter() {
150
151 session.getFilterChain().remove("LoggerFirst");
152 }
153
154
155
156
157
158
159 public long getReadIdleTime() {
160 return session.getIdleTimeInMillis(IdleStatus.READER_IDLE);
161 }
162
163
164
165
166 public long getWriteIdleTime() {
167 return session.getIdleTimeInMillis(IdleStatus.WRITER_IDLE);
168 }
169
170
171
172
173 public long getBothIdleTime() {
174 return session.getIdleTimeInMillis(IdleStatus.BOTH_IDLE);
175 }
176
177 public float getByteReadThroughtput() {
178 IoSessionStat stats = (IoSessionStat) session
179 .getAttribute(StatCollector.KEY);
180 if (stats == null)
181 return Float.NaN;
182 else
183 return stats.getByteReadThroughput();
184 }
185
186 public float getByteWrittenThroughtput() {
187 IoSessionStat stats = (IoSessionStat) session
188 .getAttribute(StatCollector.KEY);
189 if (stats == null)
190 return Float.NaN;
191 else
192 return stats.getByteWrittenThroughput();
193 }
194
195 public float getMessageReadThroughtput() {
196 IoSessionStat stats = (IoSessionStat) session
197 .getAttribute(StatCollector.KEY);
198 if (stats == null)
199 return Float.NaN;
200 else
201 return stats.getMessageReadThroughput();
202 }
203
204 public float getMessageWrittenThroughtput() {
205 IoSessionStat stats = (IoSessionStat) session
206 .getAttribute(StatCollector.KEY);
207 if (stats == null)
208 return Float.NaN;
209 else
210 return stats.getMessageWrittenThroughput();
211 }
212 }