1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.proxy.event;
21
22 import org.apache.mina.core.filterchain.IoFilter.NextFilter;
23 import org.apache.mina.core.session.IdleStatus;
24 import org.apache.mina.core.session.IoSession;
25 import org.slf4j.Logger;
26 import org.slf4j.LoggerFactory;
27
28
29
30
31
32
33
34 public class IoSessionEvent {
35 private final static Logger logger = LoggerFactory
36 .getLogger(IoSessionEvent.class);
37
38
39
40
41 private final NextFilter nextFilter;
42
43
44
45
46 private final IoSession session;
47
48
49
50
51 private final IoSessionEventType type;
52
53
54
55
56
57 private IdleStatus status;
58
59
60
61
62
63
64
65
66
67 public IoSessionEvent(final NextFilter nextFilter, final IoSession session,
68 final IoSessionEventType type) {
69 this.nextFilter = nextFilter;
70 this.session = session;
71 this.type = type;
72 }
73
74
75
76
77
78
79
80
81
82 public IoSessionEvent(final NextFilter nextFilter, final IoSession session,
83 final IdleStatus status) {
84 this(nextFilter, session, IoSessionEventType.IDLE);
85 this.status = status;
86 }
87
88
89
90
91 public void deliverEvent() {
92 logger.debug("Delivering event {}", this);
93 deliverEvent(this.nextFilter, this.session, this.type, this.status);
94 }
95
96
97
98
99
100
101
102
103
104
105
106 private static void deliverEvent(final NextFilter nextFilter,
107 final IoSession session, final IoSessionEventType type,
108 final IdleStatus status) {
109 switch (type) {
110 case CREATED:
111 nextFilter.sessionCreated(session);
112 break;
113 case OPENED:
114 nextFilter.sessionOpened(session);
115 break;
116 case IDLE:
117 nextFilter.sessionIdle(session, status);
118 break;
119 case CLOSED:
120 nextFilter.sessionClosed(session);
121 break;
122 }
123 }
124
125
126
127
128 @Override
129 public String toString() {
130 StringBuilder sb = new StringBuilder(IoSessionEvent.class
131 .getSimpleName());
132 sb.append('@');
133 sb.append(Integer.toHexString(hashCode()));
134 sb.append(" - [ ").append(session);
135 sb.append(", ").append(type);
136 sb.append(']');
137 return sb.toString();
138 }
139
140
141
142
143
144
145 public IdleStatus getStatus() {
146 return status;
147 }
148
149
150
151
152
153
154 public NextFilter getNextFilter() {
155 return nextFilter;
156 }
157
158
159
160
161
162
163 public IoSession getSession() {
164 return session;
165 }
166
167
168
169
170
171
172 public IoSessionEventType getType() {
173 return type;
174 }
175 }