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