1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.core.session;
21
22 import org.apache.mina.core.write.WriteRequest;
23
24
25
26
27
28
29
30
31 public class IoEvent implements Runnable {
32 private final IoEventType type;
33
34 private final IoSession session;
35
36 private final Object parameter;
37
38 public IoEvent(IoEventType type, IoSession session, Object parameter) {
39 if (type == null) {
40 throw new NullPointerException("type");
41 }
42 if (session == null) {
43 throw new NullPointerException("session");
44 }
45 this.type = type;
46 this.session = session;
47 this.parameter = parameter;
48 }
49
50 public IoEventType getType() {
51 return type;
52 }
53
54 public IoSession getSession() {
55 return session;
56 }
57
58 public Object getParameter() {
59 return parameter;
60 }
61
62 public void run() {
63 fire();
64 }
65
66 public void fire() {
67 switch (getType()) {
68 case MESSAGE_RECEIVED:
69 getSession().getFilterChain().fireMessageReceived(getParameter());
70 break;
71 case MESSAGE_SENT:
72 getSession().getFilterChain().fireMessageSent((WriteRequest) getParameter());
73 break;
74 case WRITE:
75 getSession().getFilterChain().fireFilterWrite((WriteRequest) getParameter());
76 break;
77 case CLOSE:
78 getSession().getFilterChain().fireFilterClose();
79 break;
80 case EXCEPTION_CAUGHT:
81 getSession().getFilterChain().fireExceptionCaught((Throwable) getParameter());
82 break;
83 case SESSION_IDLE:
84 getSession().getFilterChain().fireSessionIdle((IdleStatus) getParameter());
85 break;
86 case SESSION_OPENED:
87 getSession().getFilterChain().fireSessionOpened();
88 break;
89 case SESSION_CREATED:
90 getSession().getFilterChain().fireSessionCreated();
91 break;
92 case SESSION_CLOSED:
93 getSession().getFilterChain().fireSessionClosed();
94 break;
95 default:
96 throw new IllegalArgumentException("Unknown event type: " + getType());
97 }
98 }
99
100 @Override
101 public String toString() {
102 if (getParameter() == null) {
103 return "[" + getSession() + "] " + getType().name();
104 }
105
106 return "[" + getSession() + "] " + getType().name() + ": "
107 + getParameter();
108 }
109 }