1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20 package org.apache.mina.example.udp;
21
22 import java.net.SocketAddress;
23
24 import org.apache.mina.core.buffer.IoBuffer;
25 import org.apache.mina.core.service.IoHandlerAdapter;
26 import org.apache.mina.core.session.IdleStatus;
27 import org.apache.mina.core.session.IoSession;
28
29
30
31
32
33
34
35 public class MemoryMonitorHandler extends IoHandlerAdapter {
36
37 private MemoryMonitor server;
38
39 public MemoryMonitorHandler(MemoryMonitor server) {
40 this.server = server;
41 }
42
43 @Override
44 public void exceptionCaught(IoSession session, Throwable cause)
45 throws Exception {
46 cause.printStackTrace();
47 session.closeNow();
48 }
49
50 @Override
51 public void messageReceived(IoSession session, Object message)
52 throws Exception {
53
54 if (message instanceof IoBuffer) {
55 IoBuffer/../../../../org/apache/mina/core/buffer/IoBuffer.html#IoBuffer">IoBuffer buffer = (IoBuffer) message;
56 SocketAddress remoteAddress = session.getRemoteAddress();
57 server.recvUpdate(remoteAddress, buffer.getLong());
58 }
59 }
60
61 @Override
62 public void sessionClosed(IoSession session) throws Exception {
63 System.out.println("Session closed...");
64 SocketAddress remoteAddress = session.getRemoteAddress();
65 server.removeClient(remoteAddress);
66 }
67
68 @Override
69 public void sessionCreated(IoSession session) throws Exception {
70
71 System.out.println("Session created...");
72
73 SocketAddress remoteAddress = session.getRemoteAddress();
74 server.addClient(remoteAddress);
75 }
76
77 @Override
78 public void sessionIdle(IoSession session, IdleStatus status)
79 throws Exception {
80 System.out.println("Session idle...");
81 }
82
83 @Override
84 public void sessionOpened(IoSession session) throws Exception {
85 System.out.println("Session Opened...");
86 }
87 }