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.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(final NextFilter nextFilter, final IoSession session, final 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(final NextFilter nextFilter, final IoSession session, final IdleStatus status) {
81 this(nextFilter, session, IoSessionEventType.IDLE);
82 this.status = status;
83 }
84
85
86
87
88 public void deliverEvent() {
89 logger.debug("Delivering event {}", this);
90 deliverEvent(this.nextFilter, this.session, this.type, this.status);
91 }
92
93
94
95
96
97
98
99
100
101
102
103 private static void deliverEvent(final NextFilter nextFilter, final IoSession session,
104 final IoSessionEventType type, final IdleStatus status) {
105 switch (type) {
106 case CREATED:
107 nextFilter.sessionCreated(session);
108 break;
109 case OPENED:
110 nextFilter.sessionOpened(session);
111 break;
112 case IDLE:
113 nextFilter.sessionIdle(session, status);
114 break;
115 case CLOSED:
116 nextFilter.sessionClosed(session);
117 break;
118 }
119 }
120
121
122
123
124 @Override
125 public String toString() {
126 StringBuilder sb = new StringBuilder(IoSessionEvent.class.getSimpleName());
127 sb.append('@');
128 sb.append(Integer.toHexString(hashCode()));
129 sb.append(" - [ ").append(session);
130 sb.append(", ").append(type);
131 sb.append(']');
132 return sb.toString();
133 }
134
135
136
137
138
139
140 public IdleStatus getStatus() {
141 return status;
142 }
143
144
145
146
147
148
149 public NextFilter getNextFilter() {
150 return nextFilter;
151 }
152
153
154
155
156
157
158 public IoSession getSession() {
159 return session;
160 }
161
162
163
164
165
166
167 public IoSessionEventType getType() {
168 return type;
169 }
170 }