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.sumup;
21
22 import org.apache.mina.core.service.IoHandler;
23 import org.apache.mina.core.service.IoHandlerAdapter;
24 import org.apache.mina.core.session.IoSession;
25 import org.apache.mina.example.sumup.message.AddMessage;
26 import org.apache.mina.example.sumup.message.ResultMessage;
27 import org.slf4j.Logger;
28 import org.slf4j.LoggerFactory;
29
30
31
32
33
34
35 public class ClientSessionHandler extends IoHandlerAdapter {
36
37 private final static Logger LOGGER = LoggerFactory.getLogger(ClientSessionHandler.class);
38
39 private final int[] values;
40
41 private boolean finished;
42
43 public ClientSessionHandler(int[] values) {
44 this.values = values;
45 }
46
47 public boolean isFinished() {
48 return finished;
49 }
50
51 @Override
52 public void sessionOpened(IoSession session) {
53
54 for (int i = 0; i < values.length; i++) {
55 AddMessagesumup/message/AddMessage.html#AddMessage">AddMessage m = new AddMessage();
56 m.setSequence(i);
57 m.setValue(values[i]);
58 session.write(m);
59 }
60 }
61
62 @Override
63 public void messageReceived(IoSession session, Object message) {
64
65
66 ResultMessage../../../../org/apache/mina/example/sumup/message/ResultMessage.html#ResultMessage">ResultMessage rm = (ResultMessage) message;
67 if (rm.isOk()) {
68
69
70
71
72 if (rm.getSequence() == values.length - 1) {
73
74 LOGGER.info("The sum: " + rm.getValue());
75 session.closeNow();
76 finished = true;
77 }
78 } else {
79
80 LOGGER.warn("Server error, disconnecting...");
81 session.closeNow();
82 finished = true;
83 }
84 }
85
86 @Override
87 public void exceptionCaught(IoSession session, Throwable cause) {
88 session.closeNow();
89 }
90 }