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