1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.common;
21
22 import org.apache.mina.common.IoFilter.NextFilter;
23
24
25
26
27
28
29
30
31
32 public class IoFilterEvent extends IoEvent {
33
34 private final NextFilter nextFilter;
35
36 public IoFilterEvent(NextFilter nextFilter, IoEventType type,
37 IoSession session, Object parameter) {
38 super(type, session, parameter);
39
40 if (nextFilter == null) {
41 throw new NullPointerException("nextFilter");
42 }
43 this.nextFilter = nextFilter;
44 }
45
46 public NextFilter getNextFilter() {
47 return nextFilter;
48 }
49
50 @Override
51 public void fire() {
52 switch (getType()) {
53 case MESSAGE_RECEIVED:
54 getNextFilter().messageReceived(getSession(), getParameter());
55 break;
56 case MESSAGE_SENT:
57 getNextFilter().messageSent(getSession(), (WriteRequest) getParameter());
58 break;
59 case WRITE:
60 getNextFilter().filterWrite(getSession(), (WriteRequest) getParameter());
61 break;
62 case SET_TRAFFIC_MASK:
63 getNextFilter().filterSetTrafficMask(getSession(), (TrafficMask) getParameter());
64 break;
65 case CLOSE:
66 getNextFilter().filterClose(getSession());
67 break;
68 case EXCEPTION_CAUGHT:
69 getNextFilter().exceptionCaught(getSession(), (Throwable) getParameter());
70 break;
71 case SESSION_IDLE:
72 getNextFilter().sessionIdle(getSession(), (IdleStatus) getParameter());
73 break;
74 case SESSION_OPENED:
75 getNextFilter().sessionOpened(getSession());
76 break;
77 case SESSION_CREATED:
78 getNextFilter().sessionCreated(getSession());
79 break;
80 case SESSION_CLOSED:
81 getNextFilter().sessionClosed(getSession());
82 break;
83 default:
84 throw new IllegalArgumentException("Unknown event type: " + getType());
85 }
86 }
87 }